如何让webbrowser控件不挡住子窗体?

j9988 2018-04-10 09:15:04
win32 api 有一个对话框, 对话框里有个webbrowser控件, 还有个子窗体,
可是webbrowser老是挡住子窗体, 怎么办? topmost bringwindowtoTop 都做过全不行, 怎么办?



...全文
626 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2018-04-12
  • 打赏
  • 举报
回复
如果test2 是基于对话框的, 在资源属性中添加菜单, 并在对话框资源属性中设置菜单ID就好了 如果是窗口,Create的时候设置MenuID
zgl7903 2018-04-11
  • 打赏
  • 举报
回复
在Hellow Win32的对话框上修改的, 其实移动下位置就好了


HWND hChildDlg = NULL;

LRESULT CALLBACK ChildDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
return FALSE;
}

#include <atlbase.h>
CComModule _Module;
#include <atlwin.h>
#include <comdef.h>
#include <exdisp.h>
#pragma comment(lib,"atl")
#pragma comment(lib,"User32.lib")

CAxWindow WinContainer;


// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
CoInitialize(NULL);

//创建对话框
hChildDlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hDlg, (DLGPROC)ChildDlgProc);

IWebBrowser2* iWebBrowser;
VARIANT varMyURL;

//注册类
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInst;
wcex.hIcon = LoadIcon(hInst, (LPCTSTR)IDI_WIN32T4);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (LPCSTR)IDC_WIN32T4;
wcex.lpszClassName = WinContainer.GetWndClassName();
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

RegisterClassEx(&wcex);
}

RECT rc={0,0,100,100};
WinContainer.Create(hDlg, rc, 0,WS_CHILD |WS_VISIBLE);
DWORD dwErr = GetLastError();
WinContainer.CreateControl(L"shell.Explorer.2");
WinContainer.QueryControl(__uuidof(IWebBrowser2),(void**)&iWebBrowser);
VariantInit(&varMyURL);
varMyURL.vt = VT_BSTR;
varMyURL.bstrVal = SysAllocString(L"http://www.baidu.com");
iWebBrowser-> Navigate2(&varMyURL,0,0,0,0);
VariantClear(&varMyURL);
iWebBrowser-> Release();

PostMessage(hDlg, WM_SIZE, 0, 0);

return TRUE;
}
case WM_COMMAND:
{
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
case( WM_DESTROY ):
{
if(hChildDlg != NULL)
{
DestroyWindow(hChildDlg);
hChildDlg = NULL;
}

WinContainer.DestroyWindow();
CoUninitialize();
return 0;
}
case( WM_SIZE ):
{
RECT rc;
GetClientRect(hDlg, &rc);

//移动对话框到左上角
RECT rcDlg;
GetWindowRect(hChildDlg, &rcDlg);
MoveWindow(hChildDlg, 0, 0, rcDlg.right-rcDlg.left, rcDlg.bottom-rcDlg.top, TRUE);

//webbrowser移动到对话框右侧边
rc.left += rcDlg.right - rcDlg.left;
WinContainer.MoveWindow(&rc);

return 0;
}

default:
{
break;
}
}
return FALSE;
}



j9988 2018-04-11
  • 打赏
  • 举报
回复
主要是碰到问题,看有没有解决的方法. 我点按钮,子窗口showwindow, 就象点击弹出菜单一样, 不应该被控件挡住啊. 菜单总不能设成popup窗口吧. 还有,在MFC环境下,就不会出现这种问题, MFC的对话框等级好象比控件高
j9988 2018-04-11
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
如果想要同时在一个平面,那么调整布局,使两者不重叠; 以可以把子对话框属性修改为Popup,webbrowser 控件child属性
webbrowser是child, 用子窗体,是因为移动缩放就不用管了,代码简单. 所以没有用popup, 用popup肯定可以.
worldy 2018-04-11
  • 打赏
  • 举报
回复
引用 5 楼 j9988 的回复:
[quote=引用 3 楼 oyljerry 的回复:] 这两个窗口就应该设计的不重叠。不然窗口总会有覆盖
子窗口设计是弹出的.就是有个按钮,点击,弹出子窗口,按正常来说,webbrowser不应挡住子窗体,draw总有个先后. [/quote] 既然是弹出的,你要弹出的这个对话框就不要设置为子窗口属性
j9988 2018-04-11
  • 打赏
  • 举报
回复
引用 3 楼 oyljerry 的回复:
这两个窗口就应该设计的不重叠。不然窗口总会有覆盖
子窗口设计是弹出的.就是有个按钮,点击,弹出子窗口,按正常来说,webbrowser不应挡住子窗体,draw总有个先后.
j9988 2018-04-11
  • 打赏
  • 举报
回复
引用 2 楼 worldy 的回复:
在webbrowser的位置再加一个子窗口,然后把webbrowser作为该窗口的子窗口
试过了,不行.
worldy 2018-04-11
  • 打赏
  • 举报
回复
在webbrowser的位置再加一个子窗口,然后把webbrowser作为该窗口的子窗口
oyljerry 2018-04-11
  • 打赏
  • 举报
回复
这两个窗口就应该设计的不重叠。不然窗口总会有覆盖
j9988 2018-04-11
  • 打赏
  • 举报
回复
我想实现菜单这种效果,有没有办法?

@zgl7903
zgl7903 2018-04-11
  • 打赏
  • 举报
回复
如果想要同时在一个平面,那么调整布局,使两者不重叠; 以可以把子对话框属性修改为Popup,webbrowser 控件child属性

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧