通过CREATEWINDOW创建一个窗口,并显示一个网页,网页关闭了,窗口却关不了,各位有什么好办法吗 HWND hWnd=CreateWindow(szClassName,pszUrl,WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU ,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,g_hInstance,NULL);
CComQIPtr<IWebBrowser2> spWebBrowser;
//窗口居中开始
RECT rcDlg;
int cxDlg,cyDlg;
::GetWindowRect(hWnd,&rcDlg);
cxDlg=rcDlg.right-rcDlg.left;
cyDlg=rcDlg.bottom-rcDlg.top;
SetWindowPos(hWnd,HWND_TOP,GetSystemMetrics(SM_CXSCREEN)/2-cxDlg/2,GetSystemMetrics(SM_CYSCREEN)/2-cyDlg/2,0,0,SWP_NOSIZE);
//窗口居中结束 CAxWindow axWindow;
RECT rc;
GetClientRect(hWnd, &rc);
axWindow.Create(hWnd, rc, 0,WS_CHILD |WS_VISIBLE);
axWindow.CreateControl(OLESTR("shell.Explorer.2"));
axWindow.QueryControl(&spWebBrowser);
CComVariant varUrl(pszUrl);
spWebBrowser->Navigate2(&varUrl,0,0,0,0);
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
axWindow.Detach();
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,g_hInstance,NULL);
CComQIPtr<IWebBrowser2> spWebBrowser;
//窗口居中开始
RECT rcDlg;
int cxDlg,cyDlg;
::GetWindowRect(hWnd,&rcDlg);
cxDlg=rcDlg.right-rcDlg.left;
cyDlg=rcDlg.bottom-rcDlg.top;
SetWindowPos(hWnd,HWND_TOP,GetSystemMetrics(SM_CXSCREEN)/2-cxDlg/2,GetSystemMetrics(SM_CYSCREEN)/2-cyDlg/2,0,0,SWP_NOSIZE);
//窗口居中结束 CAxWindow axWindow;
RECT rc;
GetClientRect(hWnd, &rc);
axWindow.Create(hWnd, rc, 0,WS_CHILD |WS_VISIBLE);
axWindow.CreateControl(OLESTR("shell.Explorer.2"));
axWindow.QueryControl(&spWebBrowser);
CComVariant varUrl(pszUrl);
spWebBrowser->Navigate2(&varUrl,0,0,0,0);
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
axWindow.Detach();
{
WNDCLASS wc = {0};
wc.style=CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.hInstance=g_hInstance;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName=szClassName;
return !RegisterClass(&wc);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_QUIT:
break;
default:
return (int)DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
网页怎么关的?
如果你能控制所谓网页开关那同时给窗口发个WM_CLOSE消息不就好了
如果发现网页关了就把窗口也关掉
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;
default:
return (int)DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
MSG Msg;
while( GetMessage(&Msg,NULL,0,0)){
if(Msg.message==WM_QUIT)
{
DestroyWindow(hWnd);
// MessageBox(NULL,_T("收到WM_QUIT,即将跳出消息循环"),_T("注意了"),MB_OK);
break;
}
if(Msg.message==WM_CLOSE){
DestroyWindow(hWnd);
// MessageBox(NULL,_T("收到WM_CLOSE,即将跳出消息循环"),_T("注意了"),MB_OK);
break;
}
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return;
//结束