标题
[wince/ppc]如何勾选一个菜单 [原创!重要!如何得到 ppc 那个古怪的菜单句柄]
guest
浏览(0) +
2007-10-17 18:54:21 发表
编辑
关键字:
[wince/ppc]如何勾选一个菜单 [原创!重要!如何得到 ppc 那个古怪的菜单句柄] 网上的一大堆都不行. 即便是看了 "MS.Press.Programming.Microsoft.Windows.CE.Dot.NET.3rd.Edition.eBook-LiB.chm" 这个最牛X的书还是不行. 最后实在没撤,照着它那个含有 CheckMenuItem() 例子 "The MenuBar Example" 复制了 MenuBar.rc menubar.h MenuBar.cpp 文件,然后用 vs2005 建立一个空的 ppc 工程,结果眼前一黑编译失败! 提示说 ExPPCIncs.h 不存在! 只好又在 google 找到这个文件.总算过去了. 确实它的菜单是可以 check 的! 我又照着代码重看了几次还是不行. 长话短说吧.原因在于这种特殊菜单句柄的得到.网上代码说用 SHFindMenuBar 来得到然后再 sendmessage 某个特殊消息, sendmessage 这一步是没错,但 SHFindMenuBar 得到的句柄是无效的.正确的应当是直接取 SHCreateMenuBar 后的结果,并且这个结果是在结构中的,并且只能在调用 SHCreateMenuBar 成功后取才行! 例如 SHMENUBARINFO mbi; memset (&mbi, 0, sizeof(SHMENUBARINFO)); mbi.cbSize = sizeof(SHMENUBARINFO); mbi.hwndParent = m_hWnd; mbi.nToolBarId = IDR_MENUBAR_QUOTE_MAIN; mbi.hInstRes = g_hInst; //g_hwndMenuBar = mbi.hwndMB;//clq add//不行,要写在 SHCreateMenuBar 之后 // If we could not initialize the dialog box, return an error if (!SHCreateMenuBar(&mbi)) { return FALSE; } g_hwndMenuBar = mbi.hwndMB;//clq add//要写在 SHCreateMenuBar 之后 以后就可以用 hwndMenuBar 来操纵菜单了,例如 HMENU hMenu; //HWND hMenuMB; //hMenuMB = (HWND)SHFindMenuBar(hwndDlg);//不行的 hMenu = (HMENU)SendMessage (g_hwndMenuBar, SHCMBM_GETMENU, 0, 0); CheckMenuItem(hMenu, ID_QUOTE_ALWAYS_SHOW_BIG, MF_BYCOMMAND|MF_UNCHECKED);
guest
2007-10-17 19:04:44 发表
编辑
附件[暂不开放下载]
本着人道主义精神,友情提供能在 vs 2005 中编译的工程代码一份 :) 大家真的要感谢我 :)
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.