DrawIcon(hdc,x,y,hIcon);
EndPaint(hwnd,&ps);
return0;
caseWM_DESTROY:
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hwnd,message,wParam,lParam);
}
chap10-IconDemoÍ·Îļþ
//{{NO_DEPENDENCIES}}
//MicrosoftDeveloperStudiogeneratedincludefile.
//UsedbyIconDemo.rc
//
#defineIDI_ICON101
//Nextdefaultvaluesfornewobjects
//
#ifdefAPSTUDIO_INVOKED
#ifndefAPSTUDIO_READONLY_SYMBOLS
#define_APS_NEXT_RESOURCE_VALUE106
#define_APS_NEXT_COMMAND_VALUE40001
#define_APS_NEXT_CONTROL_VALUE1000
#define_APS_NEXT_SYMED_VALUE101
#endif
#endif
chap10-MenuDemo
/*-----------------------------------------
MENUDEMO.C--MenuDemonstration
(c)CharlesPetzold,1998
-----------------------------------------*/
#include
#include"resource.h"
#defineID_TIMER1
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
TCHARszAppName[]=TEXT("MenuDemo");
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,
PSTRszCmdLine,intiCmdShow)
{
HWNDhwnd;
MSGmsg;
WNDCLASSwndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=szAppName;
wndclass.lpszClassName=szAppName;
if(!
RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("ThisprogramrequiresWindowsNT!
"),
szAppName,MB_ICONERROR);
return0;
}
hwnd=CreateWindow(szAppName,TEXT("MenuDemonstration"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
staticintidColor[5]={WHITE_BRUSH,LTGRAY_BRUSH,GRAY_BRUSH,
DKGRAY_BRUSH,BLACK_BRUSH};
staticintiSelection=IDM_BKGND_WHITE;
HMENUhMenu;
switch(message)
{
caseWM_COMMAND:
hMenu=GetMenu(hwnd);
switch(LOWORD(wParam))
{
caseIDM_FILE_NEW:
caseIDM_FILE_OPEN:
caseIDM_FILE_SAVE:
caseIDM_FILE_SAVE_AS:
MessageBeep(0);
return0;
caseIDM_APP_EXIT:
SendMessage(hwnd,WM_CLOSE,0,0);
return0;
caseIDM_EDIT_UNDO:
caseIDM_EDIT_CUT:
caseIDM_EDIT_COPY:
caseIDM_EDIT_PASTE:
caseIDM_EDIT_CLEAR:
MessageBeep(0);
return0;
caseIDM_BKGND_WHITE:
//Note:
Logicbelow
caseIDM_BKGND_LTGRAY:
//assumesthatIDM_WHITE
caseIDM_BKGND_GRAY:
//throughIDM_BLACKare
caseIDM_BKGND_DKGRAY:
//consecutivenumbersin
caseIDM_BKGND_BLACK:
//theordershownhere.
CheckMenuItem(hMenu,iSelection,MF_UNCHECKED);
iSelection=LOWORD(wParam);
CheckMenuItem(hMenu,iSelection,MF_CHECKED);
SetClassLong(hwnd,GCL_HBRBACKGROUND,(LONG)
GetStockObject
(idColor[LOWORD(wParam)-IDM_BKGND_WHITE]));
InvalidateRect(hwnd,NULL,TRUE);
return0;
caseIDM_TIMER_START:
if(SetTimer(hwnd,ID_TIMER,1000,NULL))
{
EnableMenuItem(hMenu,IDM_TIMER_START,MF_GRAYED);
EnableMenuItem(hMenu,IDM_TIMER_STOP,MF_ENABLED);
}
return0;
caseIDM_TIMER_STOP:
KillTimer(hwnd,ID_TIMER);
EnableMenuItem(hMenu,IDM_TIMER_START,MF_ENABLED);
EnableMenuItem(hMenu,IDM_TIMER_STOP,MF_GRAYED);
return0;
caseIDM_APP_HELP:
MessageBox(hwnd,TEXT("Helpnotyetimplemented!
"),
szAppName,MB_ICONEXCLAMATION|MB_OK);
return0;
caseIDM_APP_ABOUT:
MessageBox(hwnd,TEXT("MenuDemonstrationProgram\n")
TEXT("(c)CharlesPetzold,1998"),
szAppName,MB_ICONINFORMATION|MB_OK);
return0;
}
break;
caseWM_TIMER:
MessageBeep(0);
return0;
caseWM_DESTROY:
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hwnd,message,wParam,lParam);
}
chap10-MenuDemoÍ·Îļþ
//{{NO_DEPENDENCIES}}
//MicrosoftDeveloperStudiogeneratedincludefile.
//UsedbyMenuDemo.rc
//
#defineIDM_FILE_NEW40001
#defineIDM_FILE_OPEN40002
#defineIDM_FILE_SAVE40003
#defineIDM_FILE_SAVE_AS40004
#defineIDM_APP_EXIT40005
#defineIDM_EDIT_UNDO40006
#defineIDM_EDIT_CUT40007
#defineIDM_EDIT_COPY40008
#defineIDM_EDIT_PASTE40009
#defineIDM_EDIT_CLEAR40010
#defineIDM_BKGND_WHITE40011
#defineIDM_BKGND_LTGRAY40012
#defineIDM_BKGND_GRAY40013
#defineIDM_BKGND_DKGRAY40014
#defineIDM_BKGND_BLACK40015
#defineIDM_TIMER_START40016
#defineIDM_TIMER_STOP40017
#defineIDM_APP_HELP40018
#defineIDM_APP_ABOUT40019
#defineID_MENUITEM4002040020
//Nextdefaultvaluesfornewobjects
//
#ifdefAPSTUDIO_INVOKED
#ifndefAPSTUDIO_READONLY_SYMBOLS
#define_APS_NEXT_RESOURCE_VALUE102
#define_APS_NEXT_COMMAND_VALUE40021
#define_APS_NEXT_CONTROL_VALUE1000
#define_APS_NEXT_SYMED_VALUE101
#endif
#endif
chap10-NoPopups
/*-------------------------------------------------
NOPOPUPS.C--DemonstratesNo-PopupNestedMenu
(c)CharlesPetzold,1998
-------------------------------------------------*/
#include
#include"resource.h"
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,
PSTRszCmdLine,intiCmdShow)
{
staticTCHARszAppName[]=TEXT("NoPopUps");
HWNDhwnd;
MSGmsg;
WNDCLASSwndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szAppName;
if(!
RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("ThisprogramrequiresWindowsNT!
"),
szAppName,MB_ICONERROR);
return0;
}
hwnd=CreateWindow(szAppName,
TEXT("No-PopupNestedMenuDemonstration"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
returnmsg.wParam;
}
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
staticHMENUhMenuMain,hMenuEdit,hMenuFile;
HINSTANCEhInstance;
switch(message)
{
caseWM_CREATE:
hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
hMenuMain=LoadMenu(hInstance,TEXT("MenuMain"));
hMenuFile=LoadMenu(hInstance,TEXT("MenuFile"));
hMenuEdit=LoadMenu(hInstance,TEXT("MenuEdit"));
SetMenu(hwnd,hMenuMain);
return0;
caseWM_COMMAND:
switch(LOWORD(wParam))
{
caseIDM_MAIN:
SetMenu(hwnd,hMenuMain);
return0;
caseIDM_FILE:
SetMenu(hwnd,hMenuFile);
return0;
caseIDM_EDIT:
SetMenu(hwnd,hMenuEdit);
return0;
caseIDM_FILE_NEW:
caseIDM_FILE_OPEN:
caseIDM_FILE_SAVE:
caseIDM_FILE_SAVE_AS:
caseIDM_EDIT_UNDO:
caseIDM_EDIT_CUT:
caseIDM_EDIT_COPY:
caseIDM_EDIT_PASTE:
caseIDM_EDIT_CLEAR:
MessageBeep(0);
return0;
}
break;
caseWM_DESTROY:
SetMenu(hwnd,hMenuMain);
DestroyMenu(hMenuFile);
DestroyMenu(hMenuEdit);
PostQuitMessage(0);
return0;
}
returnDefWindowProc(hwnd,message,wPa