16,472
社区成员
发帖
与我相关
我的任务
分享
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HMENU hMenu;
switch (message)
{
case WM_CREATE:
hMenu=GetSystemMenu(hWnd,FALSE); //得到系统菜单句柄
AppendMenu(hMenu,MF_BYCOMMAND,IDM_MAXIMUM,_T("最大化")); //添加菜单项
AppendMenu(hMenu,MF_BYCOMMAND,IDM_MINIMUM,_T("最小化"));
AppendMenu(hMenu,MF_BYCOMMAND,IDM_RESTORE,_T("还原"));
EnableMenuItem(hMenu,IDM_RESTORE,MF_GRAYED); // 最初显示时,将还原按钮灰显
break;
case WM_SYSCOMMAND:
switch (wParam)
{
case IDM_MAXIMUM: //按下最大化菜单项的处理
ShowWindow(hWnd,SW_MAXIMIZE);
EnableMenuItem(hMenu,IDM_MAXIMUM,MF_GRAYED);
EnableMenuItem(hMenu,IDM_MINIMUM,MF_ENABLED);
EnableMenuItem(hMenu,IDM_RESTORE,MF_ENABLED);
return 0; //告诉系统执行自己的菜单项处理
case IDM_MINIMUM: //按下最小化菜单项的处理
ShowWindow(hWnd,SW_MINIMIZE);
EnableMenuItem(hMenu,IDM_MINIMUM,MF_GRAYED);
EnableMenuItem(hMenu,IDM_MAXIMUM,MF_ENABLED);
EnableMenuItem(hMenu,IDM_RESTORE,MF_ENABLED);
return 0;
case IDM_RESTORE: //按下还原菜单项的处理
ShowWindow(hWnd,SW_NORMAL);
EnableMenuItem(hMenu,IDM_RESTORE,MF_GRAYED);
EnableMenuItem(hMenu,IDM_MAXIMUM,MF_ENABLED);
EnableMenuItem(hMenu,IDM_MINIMUM,MF_ENABLED);
return 0;
}
return DefWindowProc(hWnd,message,wParam,lParam); //当用户按下其他菜单项时,执行系统默认处理
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}