win32强化练习4.1_更改别人的菜单
来源:互联网 发布:js单选框单击事件 编辑:程序博客网 时间:2024/05/22 12:28
菜单是非常的常用的~
常规的静态的菜单(不需要变化的)可以直接由资源编辑器在.rc文件中建立,然后在程序的注册窗口类中指明,例如:
wcex.lpszMenuName= MAKEINTRESOURCE (IDC_WINMENU);
或者在窗口创建时指定:
HMENU hMenu = LoadMenu(hInst, MAKEINTRESOURCEA(IDR_MENU1));HWND hwnd = CreateWindow("Main","wnd",WS_OVERLAPPEDWINDOW, 0,0,400,300,NULL,hMenu/*菜单所在*/, hInst, NULL);而当我们需要动态的添加菜单时,我们需要在.cpp文件中自己来创建菜单项:
HMENU hRC = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1)); HMENU hPlugin = CreatePopupMenu(); AppendMenu(hPlugin, MF_STRING, 2011, "File2"); AppendMenu(hPlugin, MF_STRING, 2012, "File3"); AppendMenu(hRC, MF_POPUP, (UINT)hPlugin, "Plugins"); SetMenu(hwndDlg, hRC);这样已经能够基本搞定自己程序里的菜单了!
而我们的这个练习是去搞定别人程序的菜单,以notepad记事本为例。步骤如下:
1. 打开notepad,打开SPY++,得到Notepad的窗口句柄,例如:
2. 建立一个按钮,点击获取notepad的窗口句柄,然后获取其菜单句柄,接着获取其菜单子项的句柄
3. 使用ModifyMenu更改某个菜单项
4. 使用AppendMenu添加菜单项
2.
case WM_CREATE:CreateWindow("BUTTON", "CHANGE", WS_CHILD | WS_VISIBLE, 10, 10, 80 , 25, hwnd, HMENU(10031), g_hInst, NULL);break;
case 10031:{HWND hDes = (HWND)0x005D0BBE;HMENU hMenu = GetMenu(hDes);HMENU hSub = GetSubMenu(hMenu, 3);3.
ModifyMenu(hSub, 0/*更改第几项*/, MF_BYPOSITION, 0, TEXT("被我改了"));AppendMenu(hSub, MF_STRING, 1009, "增加的");AppendMenu(hSub, MF_STRING, 1009, "2次增加的");}break;可以不断调整程序对菜单进行添加和更改,结果如图:
0 0
- win32强化练习4.1_更改别人的菜单
- win32强化练习4.3_粗糙的SPY获取别人的窗口
- win32强化练习4.5_标准工具栏的使用
- win32强化练习3.6_贪吃蛇半部
- win32强化练习3.7_拖动窗口
- win32强化练习4.2_菜单勾选与图标变换
- win32强化练习4.0_资源相关练习简介
- win32强化练习4.6_自定义图标或图像的工具栏
- win32强化练习3.3_定时器与弹球
- win32强化练习3.5_弹球游戏(键盘+定时器)
- win32强化练习4.4_状态栏、坐标与时钟
- win32强化练习4.7_快速建立TreeView
- win32强化练习4.9_快速建立ListView
- win32强化练习5.1_动画秒表(位图初步)
- win32菜单练习复习
- win32强化练习4.8_TreeView快速应用(处理消息)
- Win32的菜单编程
- win32 菜单资源的载入
- Android ImageView用法
- Android 打造自己的Application类
- openresty设置error_page
- hdu 1017
- C语言system函数详解
- win32强化练习4.1_更改别人的菜单
- DOM对象之Window
- CI框架制作博客网站前台界面
- 51nod 1009 数字1的数量
- HDU-剪花布条(kmp)&& HDU-Oulipo(kmp)的区别
- Java与正则表达式之正则表达式基础
- typedef与define
- 函数与宏
- 贴一个不错的git教程