win32sdk下怎么实现webbrowser控件,用com或atl都行,拜托了

龚坚刚 2019-11-03 15:33:00

推荐回答

// TestBrowser.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "TestBrowser.h"////////////////////////////////////////////////////////#include #include #include #include #include ////////////////////////////////////////////////////////#define MAX_LOADSTRING 100// Global Variables:HINSTANCE hInst;        // current instanceTCHAR szTitle;   // the main window class name// Forward declarations of functions included in this code module:ATOM    MyRegisterClassHINSTANCE hInstance;BOOL    InitInstanceHINSTANCE, int;LRESULT CALLBACK WndProcHWND, UINT, WPARAM, LPARAM;INT_PTR CALLBACK AboutHWND, UINT, WPARAM, LPARAM;////////////////////////////////////////////////////////CComModule _Module;CAxWindow WinContainer; CComPtr  pWebBrowser;#pragma commentlib,"atl"////////////////////////////////////////////////////////int APIENTRY _tWinMainHINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine, int       nCmdShow{ UNREFERENCED_PARAMETERhPrevInstance; UNREFERENCED_PARAMETERlpCmdLine; ////////////////////////////////////////////////////// // CoInitializeNULL;  AtlAxWinInit;  // ////////////////////////////////////////////////////// MSG msg; HACCEL hAccelTable; // Initialize global strings LoadStringhInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING; LoadStringhInstance, IDC_TESTBROWSER, szWindowClass, MAX_LOADSTRING; MyRegisterClasshInstance; // Perform application initialization: if !InitInstance hInstance, nCmdShow {  return FALSE; } hAccelTable = LoadAcceleratorshInstance, MAKEINTRESOURCEIDC_TESTBROWSER; // Main message loop: while GetMessage&msg, NULL, 0, 0 {  if !TranslateAcceleratormsg.hwnd, hAccelTable, &msg  {   TranslateMessage&msg;   DispatchMessage&msg;  } } ////////////////////////////////////////////////////// // CoUninitialize; // ////////////////////////////////////////////////////// return int msg.wParam;}////  FUNCTION: MyRegisterClass////  PURPOSE: Registers the window class.////  COMMENTS:////    This function and its usage are only necessary if you want this code//    to be compatible with Win32 systems prior to the ''RegisterClassEx''//    function that was added to Windows 95. It is important to call this function//    so that the application will get ''well formed'' small icons associated//    with it.//ATOM MyRegisterClassHINSTANCE hInstance{ WNDCLASSEX wcex; wcex.cbSize = sizeofWNDCLASSEX; wcex.style   = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra  = 0; wcex.cbWndExtra  = 0; wcex.hInstance  = hInstance; wcex.hIcon   = LoadIconhInstance, MAKEINTRESOURCEIDI_TESTBROWSER; wcex.hCursor  = LoadCursorNULL, IDC_ARROW; wcex.hbrBackground = HBRUSHCOLOR_WINDOW+1; wcex.lpszMenuName = MAKEINTRESOURCEIDC_TESTBROWSER; wcex.lpszClassName = szWindowClass; wcex.hIconSm  = LoadIconwcex.hInstance, MAKEINTRESOURCEIDI_SMALL; return RegisterClassEx&wcex;}////   FUNCTION: InitInstanceHINSTANCE, int////   PURPOSE: Saves instance handle and creates main window////   COMMENTS:////        In this function, we save the instance handle in a global variable and//        create and display the main program window.//BOOL InitInstanceHINSTANCE hInstance, int nCmdShow{ HWND hWnd; hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindowszWindowClass, szTitle, WS_OVERLAPPEDWINDOW,  CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL; if !hWnd {  return FALSE; } ShowWindowhWnd, nCmdShow; UpdateWindowhWnd; return TRUE;}////  FUNCTION: WndProcHWND, UINT, WPARAM, LPARAM////  PURPOSE:  Processes messages for the main window.////  WM_COMMAND - process the application menu//  WM_PAINT - Paint the main window//  WM_DESTROY - post a quit message and return////LRESULT CALLBACK WndProcHWND hWnd, UINT message, WPARAM wParam, LPARAM lParam{ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; HRESULT hr; RECT rc; switch message { ///////////////////////////////////////////////// // case WM_CREATE:  {   GetClientRecthWnd,&rc;    WinContainer.CreatehWnd, &rc, L"Shell.Explorer", WS_CHILD | WS_VISIBLE;    hr = WinContainer.QueryControl__uuidofIWebBrowser2, void**&pWebBrowser;    if FAILEDhr   {    return   -1L;   }   VARIANT vt;   vt.vt = VT_BSTR;   vt.bstrVal = L"http://www.bing.com";   hr = pWebBrowser->Navigate2&vt, NULL, NULL, NULL, NULL;  }  break; case WM_SIZE:  {   int cx, cy;   cx = LOWORDlParam;   cy = HIWORDlParam;   WinContainer.MoveWindow0, 0, cx, cy;  }  break; /// ////////////////////////////////////////////////////// case WM_COMMAND:  wmId    = LOWORDwParam;  wmEvent = HIWORDwParam;  // Parse the menu selections:  switch wmId  {  case IDM_ABOUT:   DialogBoxhInst, MAKEINTRESOURCEIDD_ABOUTBOX, hWnd, About;   break;  case IDM_EXIT:   DestroyWindowhWnd;   break;  default:   return DefWindowProchWnd, message, wParam, lParam;  }  break; case WM_PAINT:  hdc = BeginPainthWnd, &ps;  // TODO: Add any drawing code here...  EndPainthWnd, &ps;  break; case WM_DESTROY:  /////////////////////////////////////////////  //        pWebBrowser.Release;         WinContainer.DestroyWindow;   //  /////////////////////////////////////////////  PostQuitMessage0;  break; default:  return DefWindowProchWnd, message, wParam, lParam; } return 0;}// Message handler for about box.INT_PTR CALLBACK AboutHWND hDlg, UINT message, WPARAM wParam, LPARAM lParam{ UNREFERENCED_PARAMETERlParam; switch message { case WM_INITDIALOG:  return INT_PTRTRUE; case WM_COMMAND:  if LOWORDwParam == IDOK || LOWORDwParam == IDCANCEL  {   EndDialoghDlg, LOWORDwParam;   return INT_PTRTRUE;  }  break; } return INT_PTRFALSE;}随手给你写了一个。看看是不是你所需要的。大部分代码是自动生成的,我写的代码都通过注释方式给括起来了,希望能理解。
黄白玲2019-11-03 16:00:10

提示您:回答为网友贡献,仅供参考。

相关问答

外汇储备作为一个国家经济金融实力的标志,它是弥补该国国际收支逆差,抵御金融风暴,稳定该国汇率以及维持该国国际信誉的物质基础。对于发展中国家来说,往往要持有高于常规水平的外汇储备。但是,外汇储备并非多多益善,多年来中国外汇储备规模的急剧扩大对经济发展产生了许多负面影响。损害经济增长的潜力一定规模的外汇储备流入代表着相应规模的实物资源的流出,这种状况不利于一国经济的增长。如果中国的外汇储备超常增长持续下去,将损害经济增长的潜力。带来利差损失据保守估计,以投资利润率和外汇储备收益率的差额的2%来看,若拥有6000亿美元的外汇储备,年损失高达100多亿美元。如果考虑到汇率变动的风险,这一潜在损失更大。另外,很多国家外汇储备构成中绝大部分是美元资产,若美元贬值,则该国的储备资产将严重缩水。机会成本损失中国每年引进大约500亿美元的外商投资,为此国家要提供大量的税收优惠;同时,中国又持有大约一万多亿美元的外汇储备,闲置不用。这样,一方面是国家财政收入减少,另一方面老百姓省吃俭用借钱给外国人花,其潜在的机会成本不可忽视。 削弱了宏观调控效果在现行外汇管理体制下,央行负有无限度对外汇资金回购的责任,因此随着外汇储备的增长,外汇占款投放量不断加大。外汇占款的快速增长不仅从总量上制约了2004年以来宏观调控的效力,还从结构上削弱宏观调控的效果,并进一步加大人民币升值的压力,使央行调控货币政策的空间越来越小。影响国际优惠贷款外汇储备过多会使中国失去国际货币基金组织的优惠贷款。按照IMF的规定,外汇储备充足的国家不但不能享受该组织的优惠低息贷款,还必须在必要时对国际收支发生困难的其他成员国提供帮助。这对中国来讲,不能不说是一种浪费。加速热钱流入引发或加速该国的通货膨胀。有形经济资源流失大量囤积外汇,会引起国内有形经济资源的流失,无论是出口创汇还是发行本国货币购买外汇,都会形成对本国有形经济资源的购买能力,造成国内有形经济资源的流失。通货膨胀推高本国货币的通货膨胀,资源的流失和大量发行本国货币所换来得外汇如果不能实现购买,则会推动国内通货膨胀的持续上扬。迫使国内生产企业倒闭出口创汇不能回购资源,在国内以发行本国货币虚增企业利润来实现,实质上是生产企业的出口成本以通货膨胀消化,长期运做,使所有生产企业总体上收不抵支,使这些企业所持有的生产资料转化为外汇储备的货币形态,造成倒闭,而以企业经济赢利为基础而生存的银行也会因企业的倒闭使放出的贷款不能收回而发生倒闭。产生巨额的汇兑损失由于这些损失需要通过本国货币的无保证发行获得,由工商企业和银行系统消化,迫使企业通过股份制改革,吸收民间资本公担,我国大批国企和国有独资银行的股份制改革,就是因为企业无法独立承担央行大量囤积外汇产生的汇兑损失,不得不吸收民间资金共担损失以苟延残喘。实质上国有企业的股份制改造,本质属于国有独资制造企业和银行的变相破产形式。给外汇发行国通过大量发行钞票,稀释其货币购买力,掠夺持汇国的财富以逃避债务创造条件。这是形成我国中央银行的汇兑损失的主要原因。蒸发本国货币的积蓄大量通货膨胀本身是中央银行稀释本国货币购买力的表现,但中央银行在稀释购买力时没有补贴持币人等比的新增货币,从而使百姓财富蒸发。本国货币主权丧失蚂蚁搬家式的将本国货币的发行准备移出国外,造成本国货币主权的丧失。大量发行本国货币购买外汇,是以所谓的单向等价交换为特征实现,即使用本国货币购买外汇,而外汇发行国将换得的人民币购买我国商品输入其国家,销售后补足外汇的发行准备,回笼该国货币买削其债务。而本国因囤积外汇不能回笼资源,造成大量无准备的货币发行,从而丧失对本国货币的节制,任其通货膨胀,这意味着本国货币主权的丧失。
行啊,如何向客户介绍产品向客户介绍产品是销售与客户交流中最重要的环节,通过销售人员的产品论述,让客户对产品及销售人员本身有所了解,有助于销售。向客户介绍产品要注意1.提前演练才会有备无患。在每一次产品介绍前我们都要先确定,我们先介绍什么,怎样介绍,按什么顺序。产品介绍的内容必须熟记在心。聪明的销售员在家里就会演练纯熟。只有做到心里有数,和客户交谈时才会胸有成竹。为了保证与客户沟通的效果,产品介绍之前请先问自己这样四个问题:*我怎样引起对方注意?*我怎样证明产品有效?*我怎样让客户产生购买欲望?*我怎样来表现产品?向客户介绍产品要注意2.只有自己非常喜欢,别人才会感兴趣。只有自己对一件东西着了迷,才能使别人对它兴奋。人都有分享的心态,把好的东西介绍给别人就会很愉快,很有信心。只有喜欢自己的产品,它才有生命力。我们在内心里急不可耐地想告诉别人我们的产品是什么样的,会给对方带来哪些好处或解决什么样的问题,这种兴奋愉悦之情表明产品在我们心中的价值所在。假如我们自己都不重视的话,就不可能期待客户对我们的产品给予重视。向客户介绍产品要注意3.清楚自己的目的。每次介绍一定要清楚,自己想使客户了解哪些,给客户什么感觉,要达到什么目的。不是每一次产品介绍都会成交,但每次介绍都是为最后的成交作铺垫,所以,每次介绍时一定要清楚:这次与客户沟通我要达到什么目的?向客户介绍产品要注意4.以客户的兴趣为中心。每个人的兴趣爱好不一样,沟通方式也不一样。在介绍产品时,要因人而异,用客户喜欢的方式来解说。介绍产品时,一定不要忘了和客户互动,让客户亲自参与体验,才会感受深刻,因为客户最在意自己的感受。向客户介绍产品要注意5.问问题,让客户参与。在介绍产品时,只有不断和客户互动,及时发问,才会了解客户的想法并很好地引导客户的思维。发问会让客户参与其中,对产品的感受更加深刻。特色会引发兴趣,而利益会引发渴望。不断地发问会使客户深入地了解产品的特征和优势对他们有什么好处,充分调动客户对产品的兴趣,激发他们购买的欲望。向客户介绍产品要注意6.将产品的优点与客户的需求连接起来。介绍产品时一定要让客户听起来舒服,又能满足客户的需求。为了实现这一目标,销售员要做好两方面的工作:一是分析产品的特点。二是分析客户的需求。客户永远关心产品对自己的利益和好处,而不是产品的特点,所以销售人员在介绍产品时,要把产品的特点转化成客户所能得到的利益,从对方的利益这一角度来介绍你的产品。销售展示的三个简单步骤:介绍产品功能,介绍产品优势,最后介绍客户的利益。有一个固定模式:“由于这项——你就能够——也就是说——”举例来说,当你在描述一款新式手机的时候,你可以说:“由于这种手机带有目前市场上最高像素的摄像装置。向客户介绍产品要注意7.把客户带入一个点头说“是”的节奏中去。介绍产品时,不停地、自然地问客户:“对不对?”“您相信吗?”“很好,您觉得呢?”如果客户相信了那些优点,他是很愿意给予赞同的。我们得到的这种赞同越多,客户与我们之间取得的一致性就越高,而且愿意购买的可能性就越大。向客户介绍产品要注意8.减少客户的痛苦和损失。客户并不想了解产品所有的特点和功能,但是对能够减轻自己痛苦的功能却十分感兴趣。所以,销售的重点在于关注客户的痛苦或他们渴望解决的问题,而不是你的产品。向客户介绍产品要注意9.与客户的视线接触。客户是点头还是皱眉头?他是从上往下打量你,还是惊讶得不知所措?不断观察客户是绝对重要的,这样我们才能确知他对我们的产品已经了解到什么程度了,是否在考虑购买。只有视线接触才能确认什么是我们所需要的。有道是:艺高人胆大。要在讲台不紧张,首要的是要有“自信”的勇气。当然,自信不是盲目的,是建立在雄厚底蕴基础之上的,你只有有着充分的准备——主题明确,思路清晰,背景材料充分,再准备几个临场发挥的方案,你岂不是有了心底?二是要有目空一切的胆略。既然你已经走向讲台,就要确信自己就是中心和焦点,一切都应在我手中,管他是领导还是大爷都要听我的。三是要要“幻化”一切的方法。你的眼光无论投到何处把入眼的活物儿都要幻化成无生命的死物——每一位听众都是一张椅子,最多是一棵树!你对椅子和树说话难道还会紧张不成?四是要善于总结和汲取。在上台之前,要多看一下别人的演讲录像,琢磨他们的成功之处和失误的所在,用于借鉴;在你演讲之后,要总结自己的得与失,下一次会发扬和纠正。相信你会成为一位演讲家的。三、向客户介绍的方法与途径处于殡仪馆第一个对外服务窗口与顾客接触的遗体接运工,要善于与顾客进行沟通交流,了解顾客的需求,向他们介绍不同档次的殡殓服务项目,宣传殡仪馆的服务特色,迎合客人的消费心理。同时殡仪馆应利用多种宣传手段,以期在客户心目中建立起殡仪馆良好的品牌形象。按一般规律,在向客户介绍时开口不离价格、催促客人的做法会使客人产生反感,也是对客人不礼貌的表现。因此遗体接运工在接洽服务中要有消费意识,即站在顾客的角度考虑,并注意观察、揣摩不同顾客不同的服务需求和消费心理,在顾客不了解情况时,要注意多加介绍,并推出系列服务,使顾客有挑选的余地,这样与顾客之间的沟通就会增加感情色彩:同时遗体接运工的亲切感也能有效缩短与顾客之间的距离,使接洽过程变得更亲切。顾客在交谈过程中往往会流露出个人的顾虑和想法,这时遗体接运工应利用机会向顾客推荐几种可供选择的不同档次的服务,尤其是价格的附加值应一一向顾客说明,提高顾客对服务的兴趣和价值取向的自主性。一向客户介绍的技巧1.引起顾客的兴趣。遗体接运工应当注意针对不同顾客的不同需求,采用情感沟通、服务推介等方式,以情、以理感染顾客,尽可能与顾客产生共鸣。同时应将殡仪馆中最符合顾客需求的服务展示给顾客。2.激发顾客的欲望。这是向顾客介绍能否成功的关键阶段。在这个阶段可采用减少风险、多方证实、利益诱导等技巧,使顾客进一步增强对遗体接运工的信任感。比如可通过向顾客展示印刷精美的宣传资料、本殡仪馆曾获得的行业奖项、政界要人和社会知名人士的重大重要丧事记录等,来提高所介绍服务在客户心中的可信度。3.促成顾客的行为。通过识别和把握顾客表露的信号,采用适当的策略和方法,促使顾客选择某项服务。二向客户介绍的方法遗体接运工主要通过向顾客介绍殡殓服务项目的效用和蕴涵的寓意,促使顾客产生兴趣,吸引顾客的消费行为。在向顾客介绍时可采用陈述的语言,陈述语言应该简洁、流畅、准确、生动,使顾客在短时间内全面、准确地了解服务。同时也可采用讨论的方式,在回·158·答顾客问题的过程中,采用讨论、角色互换等交谈技巧,使双方气氛交流能显得轻松。三服务介绍的重点遗体接运工在向顾客介绍殡仪馆的服务时,除了自身熟知服务特色、保持自信心以外,更要吸引顾客的注意力和兴趣,激发颐客的购买欲望和行为。因此,遗体接运工需掌握服务介绍的重点。1.应当注意从两个方面进行介绍:一是暇务昕带来的直接效用、利益,二是通过服务所取得的附加利益。2.适时地、不断地提问或总结介绍过程.可以不断加强顾客对服务介绍的认知和接受程度,反之又可以使遗体接运工调整或改变服务介绍的方式或角度。3.减少顾客的风险心理。可以在介绍过程中.适当运用殡仪馆品牌知名度、名人效应等多种感官刺激手段,逐步打消顾客的疑虑等:四向客户介绍的注意事项1.学会聆听。遗体接运工在与顾客交谈时耍专注与思考,倾听顾客讲述要求时,要表现出浓厚的兴趣,既不要插话也不要急于纠正顾客的观点,从中鉴别、捕捉关键词句,以便了解并掌握顾客的真正意图。同时要学会忍耐,顾客是买方,有些言语可能逆耳甚至过激,遗体接运工要表现出足够的涵养和大度。2.对于重要顾客或职务、身份较高的客户.遗体接运工可以提前通知有关部门,所要参观的服务等重点布置并安排好人员引领.菠展示的过程体现出重点服务和精心安排。3.避免使用模糊词语。在整个服务介绍过罨审.壹避免使用“我不太清楚”、“让我问一下”、“可能”之类的含糊词语=这些词语会增加顾客的疑虑。4.多使用称赞顾客选择的词语。在顾客作出的迄誊与遗体接运工的想法相侼时,应趋同顾客的选择,即使顾客选择了饫挡次的阶位.也要适时向顾客表示感谢,并称赞顾客的选择,同时还能向顾客表示如吴有饪阿问题或是疑问的话随时愿意为他们服务。5.不能硬性推销,也不能欺骗顾客。