C 创建IWebBrowser2控件

C 创建IWebBrowser2控件,c,windows,winapi,mingw,C,Windows,Winapi,Mingw,我只想成功地将它添加到我的窗口中,这是一件非常困难的事情 我试过了 #include "windef.h" #include "winbase.h" #include "initguid.h" #include "ole2.h" #include "olectl.h" #include "shobjidl.h" #include "shlguid.h" #include "exdispid.h" #include <objidl.h> #include "OleIdl.h" #inc

我只想成功地将它添加到我的窗口中,这是一件非常困难的事情

我试过了

#include "windef.h"
#include "winbase.h"
#include "initguid.h"
#include "ole2.h"
#include "olectl.h"
#include "shobjidl.h"
#include "shlguid.h"
#include "exdispid.h"
#include <objidl.h>
#include "OleIdl.h"
#include "Objbase.h" 

#include <exdisp.h>
#include <exdispid.h>

...

IWebBrowser2* pBrowser2;
HRESULT hr = CoCreateInstance(CLSID_InternetExplorer, NULL,
    CLSCTX_ALL, IID_IWebBrowser2, (void**)&pBrowser2);
我也试过了

CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_LOCAL_SERVER, 
                   IID_IWebBrowser2, (void**)&pBrowser2);
此窗口至少可以编译,但不会向窗口中添加任何内容:

    hr = OleCreate(&CLSID_WebBrowser, &IID_IOleObject, 1/*OLERENDER_DRAW*/, 0,
                            &ClientSite, &Storage, (void**)&mpWebObject);
我尝试了在网上找到的所有标题和库(如您所见)

以下是我链接的库:

gcc -lmingw32 -mwindows  -luser32 -lgdiplus -lole32 -luuid -loleaut32 -lcomctl32 -lcomdlg32 -ladvapi32 -loleaut32 -lshdocvw -lmf -lmfuuid

谢谢

显然MinGW不支持IWebBrowser2。代码在Visual Studio中运行良好。

首先包括以下头文件:

#include <windows.h>
#include <objbase.h>
#include <ExDisp.h>
#include <ExDispid.h>
使用uuuidof macro takes可以解决与外部定义的GUI的链接问题。

您可以尝试


这是MinGW的一个分支,它除了支持32位和64位构建之外,还正在进行更积极的开发。特别是,改进了Windows API头。

如果使用c,则需要在链接器输入中包含
Uuid.Lib
,这里定义了
CLSID\u InternetExplorer
IID\u IWebBrowser2
。您还需要使用
CoCreateInstance(&CLSID\u InternetExplorer,NULL,CLSCTX\u ALL,&IID\u IWebBrowser2,(void**)和pBrowser2)但是您包括
-luuid
-是否在您的版本中存在
CLSID\u InternetExplorer
IID\u IWebBrowser2
?这是ms sdk的?@RbMm我怀疑MinGW没有这些常量。如果你有Visual Studio,也许你可以std::cout它们?只需查看
uuid.lib
-它们是
CLSID\u InternetExplorer
IID\u IWebBrowser2
存在。在MSSDK中,它是存在的。你是什么GUI工具包using@selbieWindows SDK依赖于非标准的MSVC编译器扩展;对于像MIWW这样的项目,大部分工作都涉及创建与G+++代码> 有关的标题,它是微软特有的扩展,只能在C++中使用。OP使用GCC和C。
#include <windows.h>
#include <objbase.h>
#include <ExDisp.h>
#include <ExDispid.h>
IWebBrowser2* pBrowser2 = nullptr;
HRESULT hr;
hr = CoCreateInstance(__uuidof(WebBrowser), NULL, CLSCTX_INPROC, __uuidof(IWebBrowser2), (void**)pBrowser2);