登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [wince/ppc]如何勾选一个菜单 [原创!重要!如何得到 ppc 那个古怪的菜单句柄]     [回主站]     [分站链接]
标题
[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 中编译的工程代码一份 :) 大家真的要感谢我 :)


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1