在VB6中用API "SetMenu" 给主窗体动态添加菜单,在窗体失去焦点时,菜单会消失,请高手赐教.

luoxiangdong 2002-02-18 07:37:40
我在开发菜单控件时,用API "SetMenu" 给主窗体动态添加菜单,在窗体失去焦点时,菜单会消失,最后不得已,只好拦截主窗口的消息WM_PAINT,再进行一次"SetMenu",重新加载菜单,但会出现明显的窗口抖动,不知那位高手能帮我解决?

代码片段:
...

Case WM_PAINT
if GetMenu(frmMain.hwnd)=0 then SetMenu(frmMain.hwnd,hMenu)
...
...全文
201 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxiangdong 2002-02-19
  • 打赏
  • 举报
回复
今日细细查看MSDN,在实践中又发现,如果先用VB的“菜单编辑器”编辑菜单,则在窗体失去焦点时,我定义的菜单会还原为用VB的“菜单编辑器”编辑的菜单。

估计VB是把“菜单编辑器”编辑的菜单作为其窗体的WindowClass的菜单,要改变为自定菜单,必须该掉WindowClass中定义的菜单,但我发现WindowClass中的菜单参数是用资源中的菜单名称字符串表示的,想必VB是用内置菜单资源实现的,但怎样用自己的菜单(只知道菜单的hWnd)替换内置资源中的菜单,我没办法了!!


Chice_wxg 2002-02-18
  • 打赏
  • 举报
回复
那我更不清楚了。

不知道VB菜单是怎么管理的。
luoxiangdong 2002-02-18
  • 打赏
  • 举报
回复
当失去焦点时,GetMenu(frmMain.hwnd)=0 ,窗口的菜单已经不存在了?!?
DrawMenuBar 恐怕不行吧?
Chice_wxg 2002-02-18
  • 打赏
  • 举报
回复
你试试
BOOL DrawMenuBar(
HWND hWnd // handle to window with menu bar to redraw
);

不过这种代码我没写过。仅供参考。呵呵

256

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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