菜单 也是一种窗口 怎样获得它的窗口句柄(不是hMenu)或者它的窗口类名,谢谢!!
我说菜单是窗口是因为 我枚举窗口,然后将其SW_HIDE,菜单也会被隐藏!!而我并没有隐藏它的主窗口。
我说菜单是窗口是因为 我枚举窗口,然后将其SW_HIDE,菜单也会被隐藏!!而我并没有隐藏它的主窗口。
解决方案 »
- 添加按钮不响应
- 怎样导出 调用了DLL中类方法 的函数?
- mfc怎样从对话框类访问视图类?
- VC++2005 的ComBox 能不能像 VC6那样,直接在控件中输入数据(如一月二月...
- 求一个通过动态创建树节点生成的树,保存节点信息到数据库的例子
- 请教如何向TreeCtrl控件发送消息
- 小弟想写可以查寻五笔字型编码的小软件,不知道从哪方面入手想请大家指点一下。
- 不知道大家有没有遇到过这样的打印问题
- 高手,我想请教一个问题,现在我想在一个窗体上点击一个按钮,主要的功能就是计算,我现在要计算很大的东西,要花费很长的时间,想在这个
- 求解决编译错误
- deng登陆验证的问题
- 快来看啊,100分赠送了啊
HWND CreateWindow(
LPCTSTR lpClassName, // registered class name
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // menu handle or child identifier
HINSTANCE hInstance, // handle to application instance
LPVOID lpParam // window-creation data
);
其中hMenu就是所要创建的窗口中菜单的句柄
要获得某窗口的菜单句柄 用GetMenu就行了
HMENU GetMenu(
HWND hWnd // handle to window
);
虽然它看起来不像窗口,但是,它确实是一种子窗口!!
既然你枚举了,不是已经得到了吗?
其ClassName为"#32768" WindowText为空字符串,由此要获得窗口句柄也就不难了
建一个mfc对话框程序,处理WM_INITPOPUPMENU消息如下
void CMyDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
CWnd *pWnd = FindWindow("#32768", "");
if(!pWnd) return;
CWnd *pWnd2 = pWnd->GetParent();
}
调试程序可知pWnd 不等于 0 其handle为 0x0001001a
pWnd2 等于 0 即菜单窗口没有父窗口,不属于子窗口
实际上,若菜单窗口是子窗口的话,FindWindow就不会返回菜单窗口的句柄有了菜单窗口的指针,就可以做些有趣的事了,
比如利用windows2000的功能使菜单窗口变透明等等
要得到菜单窗口句柄
在vckbase网上有一篇文章介绍用钩子为菜单添加阴影,
里面好像有讲如何得到句柄