您的位置:首页 > 其它

win32强化练习4.2_菜单勾选与图标变换

2016-11-24 23:05 393 查看
这节练习是菜单勾选以及图标变换的,设定就是菜单中有两项,点击任意一项则此项打勾,并把图标设置成对应的。

运行结果如图:



步骤如下:

1. 建立windows标准窗口程序(用模板建立),加入.rc文件和resource.h文件

2. 将菜单的资源和两个图标资源都加入到rc文件中并在resource.h中进行#define

3. 声明全局变量hMenu并直接在注册窗口类里loadMenu

4. 声明全局变量hIcon1,hIcon2,并在创建窗口下方loadIcon

5. 处理WM_COMMAND消息,当菜单点击时,打勾并SetIcon

程序如下:

2. 

#include "resource.h"
#include <windows.h>

IDI_ICON1 ICON "res/icon1.ico"
IDI_ICON2 ICON "res/icon2.ico"
/////////////////////////////////////////////////////////////////////////////
// Menu
IDC_WINMENU MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "ICON1", IDM_ICON1
MENUITEM "ICON2", IDM_ICON2
END
POPUP "&Help"
BEGIN
MENUITEM "&About ...", IDM_ABOUT
END
END3.
HMENU hMenu;
HICON hIcon1,hIcon2;
hMenu = GetMenu(hWnd);
hIcon1 = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
hIcon2 = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON2));
5.
switch (LOWORD(wParam))
{
case IDM_ICON1:
{
CheckMenuItem(hMenu, IDM_ICON1, MF_CHECKED);
CheckMenuItem(hMenu, IDM_ICON2, MF_UNCHECKED);
SendMessage(hWnd, WM_SETICON, 0, (LPARAM)hIcon1);
}
break;
case IDM_ICON2:
{
CheckMenuItem(hMenu, IDM_ICON2, MF_CHECKED);
CheckMenuItem(hMenu, IDM_ICON1, MF_UNCHECKED);
SendMessage(hWnd, WM_SETICON, 0, (LPARAM)hIcon2);
}
break;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WIN32