//******** part 1**************
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#pragma comment(lib,"atl")
//******** part 1**************
//******** part 3**************
CComPtr<IWebBrowser2> pWebBrowser;
CAxWindow WinContainer;//这个是atl提供的com容器
//******** part 3**************
.cpp
//******** part 2**************
//初始化com和atl
CoInitialize(NULL);
AtlAxWinInit();
//chenjian_webIE zhushi end
WinContainer=NULL;
//******** part 2**************
另外的
.h
#include "../BaseClass/Dialog.h"
//******** part 1**************
#include <atlbase.h>
#include <atlwin.h>
#pragma comment(lib,"atl")
#pragma comment(lib,"User32.lib")
//******** part 3**************
IWebBrowser2* iWebBrowser;
CAxWindow WinContainer;//这个是atl提供的com容器
//******** part 3**************
.cpp
void LicenseDialog::OnInitDialog()
{
TCHAR tcText[128] = {0};
TradeI18n* pTradeI18n = ((TradeApp*)this->GetRes()->GetParam())->GetTradeI18n();
pTradeI18n->GetString(tcText, TEXT("License_Title"));
::SendMessage(this->GetHWND(), WM_SETTEXT, 0, (LPARAM)tcText);
pTradeI18n->GetString(tcText, TEXT("License_Agree"));
::SendMessage(GetDlgItem(this->GetHWND(), IDC_LICENSEL_BTN_AGREE), WM_SETTEXT, 0, (LPARAM)tcText);
pTradeI18n->GetString(tcText, TEXT("License_Refuse"));
::SendMessage(GetDlgItem(this->GetHWND(), IDC_LICENSEL_BTN_REFUSE), WM_SETTEXT, 0, (LPARAM)tcText);
const LPRECTEX pRectEx = this->GetRectEx();
RECT rRect;
rRect.left = pRectEx->X;
rRect.right = pRectEx->X + pRectEx->Width;
rRect.top = pRectEx->Y;
rRect.bottom = pRectEx->Y + pRectEx->Height-50;
this->CreateIEPlayer();
if (WinContainer!=NULL)
{
WinContainer.MoveWindow(&rRect,FALSE);
WinContainer.ShowWindow(SW_SHOWNA);
}
/*TCHAR tcLiceselPath[MAX_PATH] = {0};
swprintf(tcLiceselPath, TEXT("%s\\License.txt"), g_pApplication->GetAppPath());
HANDLE hFile = CreateFile(tcLiceselPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if ((NULL == hFile) || (hFile == INVALID_HANDLE_VALUE))
{
TCHAR tcText[128] = {0}, tcTitle[128] = {0};
pTradeI18n->GetString(tcText, TEXT("License_NotExist"));
pTradeI18n->GetString(tcTitle, TEXT("MsgBox_Title_Error"));
MessageBox(this->GetHWND(), tcText, tcTitle, MB_ICONERROR);
EnableWindow(GetDlgItem(this->GetHWND(), IDC_LICENSEL_BTN_AGREE), FALSE);
return;
}
DWORD length = GetFileSize(hFile, NULL) / sizeof(TCHAR) + 1;
LPTSTR ptcLicesel = new TCHAR[length];
memset(ptcLicesel, 0, length * sizeof(TCHAR));
DWORD read = 0;
ReadFile(hFile, ptcLicesel, length * sizeof(TCHAR), &read, NULL);
CloseHandle(hFile);
LPTSTR pointer = ptcLicesel;
if ((pointer[0] == 0xff) &&
(pointer[1] == 0xfe))
{
pointer = &ptcLicesel[2];
}
::SendMessage(GetDlgItem(this->GetHWND(), IDC_LICENSEL_EDT_CONTENT), WM_SETTEXT, 0, (LPARAM)ptcLicesel);
delete []ptcLicesel;*/
}
BOOL LicenseDialog::CreateIEPlayer()
{
try
{
浏览器控件
//获取本地文件地址
TCHAR cFilePath[MAX_PATH] = {0};
TCHAR cAppFileName[MAX_PATH] = {0};
GetModuleFileName(0, cAppFileName, MAX_PATH);
TCHAR* p = wcsrchr(cAppFileName, '\\');
*p = 0;
swprintf_s(cFilePath, _T("%s\\License.html"), cAppFileName);
LPOLESTR pszName=OLESTR("shell.Explorer.2");
if (WinContainer==NULL)
{
RECT rc;
GetClientRect(this->GetHWND(),&rc);
WinContainer.Create(this->GetHWND(),&rc,0,WS_CHILD | WS_VISIBLE);
WinContainer.CreateControl(pszName);
HRESULT hr = WinContainer.QueryControl(__uuidof(IWebBrowser2),(void**)&iWebBrowser);
if(FAILED(hr))
{
return FALSE;
}
VARIANT varMyURL;
VariantInit(&varMyURL);
varMyURL.vt = VT_BSTR;
varMyURL.bstrVal = SysAllocString(cFilePath);//创建网页
iWebBrowser->Navigate2(&varMyURL,0,0,0,0);
VariantClear(&varMyURL);
iWebBrowser-> Release();
}
}
catch (...)
{
}
return TRUE;
//创建完成
}
问题
HttpOpenDependencyHandle
删除软件的wininet.dll