EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
.
, , drawShape .
- , . . , Windows , . , .
:
BOOL SetMenuDefaultItem(HMENU hMenu, // UINT uItem, // , UINT fByPos // FALSE);
WndProc WM_CREATE , :
SetMenuDefaultItem(GetSubMenu(hMenu,0), IDM_OPEN, FALSE);
,
HMENU GetSubMenu(HMENU hMenu, // int nPos // - );
nPos .
. , .
- (radio button). . , . .
BOOL CheckMenuRadioItem(
HMENU hmenu, // UINT idFirst, // UINT idLast, // UINT idCheck, // UINT uFlags // idFirst, idLast idCheck);
uFlags MF_BYCOMMAND, . uFlags MF_BYPOSITTION, .
, , Resurce.h . CheckMenuRadioItem .
- . ,
|
|
CheckMenuRadioItem(GetSubMenu(hMenu,1),IDM_SHOW_SHAPE,
IDM_HIDE_SHAPE, IDM_SHOW_SHAPE, MF_BYCOMMAND);
WM_CREATE.
WM_COMMAND wParam ,
case IDM_SHOW_SHAPE:
CheckMenuRadioItem(GetSubMenu(hMenu,1),IDM_ SHOW_SHAPE,
IDM_ HIDE_SHAPE, LOWORD(wParam), MF_BYCOMMAND);
case IDM_HIDE_SHAPE:
CheckMenuRadioItem(GetSubMenu(hMenu,1),IDM_ SHOW_SHAPE,
IDM_ HIDE_SHAPE, LOWORD(wParam), MF_BYCOMMAND);
. , .
:
nPos GetSubMenu | |||
ID_RECTANGLE | ID_ELLIPSE | ||
ID_RED | ID_BLUE | ||
ID_DARK | ID_LIGHT |
. , .
8. ! IDM_RESIZE , . case IDM_RESIZE: , shapeSize:
shapeSize = (shapeSize == MIN)? MAX: MIN;
// , shapeSize 0 1
. , - ModifyMenu.
BOOL ModifyMenu(HMENU hMnu, // UINT uPosition, // UINT uFlags, // ( MF_BYCOMMAND // MF_BYPOSITTION) PTR uIDNewItem, // LPCTSTR lpNewItem // );
switch WndProc TCHAR :
TCHAR* itemResizeName[2] = {TEXT("!"),TEXT("!")};
case IDM_RESIZE:
ModifyMenu(hMenu, IDM_RESIZE, MF_BYCOMMAND, IDM_RESIZE,
itemResizeName[shapeSize]); // 0 1!!
DrawMenuBar(hWnd); //
//
.
, ! .
9. , , , . , . , EnableMenuItem.
BOOL EnableMenuItem(HMENU hMenu, // UINT uIDEnableItem, // UINT uEnable // );
uEnable:
MFS_ENABLED ( ),
MFS_DISABLED ( ),
MFS_GRAYED ( ).
IDM_RESIZE. WM_COMMAND, wParam, IDM_HIDE_SHAPE, EnableMenuItem, MF_BYCOMMAND|MFS_GRAYED.
|
|
EnableMenuItem (hMenu, IDM_RESIZE, MF_BYCOMMAND|MFS_GRAYED);
DrawMenuBar(hWnd); // !!!!!!!!
WM_COMMAND, wParam, IDM_SHOW_SHAPE, EnableMenuItem, MF_BYCOMMAND|MFS_ENABLED.
EnableMenuItem (hMenu, IDM_RESIZE, MF_BYCOMMAND|MFS_ ENABLED);
DrawMenuBar(hWnd); // !!!!!!!!
. , ! .
, . , ID_RECTANGLE, ID_RHOMB, ID_ ELLIPSE, ID_ RED, ID_ GREEN, ID_BLUE, ID_DARK, ID_LIGHT, ID_MEDIUM. ,
UINT IdPunktMenu [ ] = { IDM_RESIZE,
ID_RECTANGLE, ID_RHOMB, ID_ELLIPSE,
ID_RED, ID_GREEN, ID_BLUE,
ID_DARK, ID_LIGHT, ID_MEDIUM };
sizeof (IdPunktMenu) / sizeof(UINT).
EnableMenuItem, , IdPunktMenu, n, UINT uEnable EnableMenuItem , , .. :
void EnableMenuItem (HMENU hMenu, UINT* IdPunktMenu, int n, UINT uEnable).
case EnableMenuItem .
. , .
10. (keyboard accelerator) , WM_COMMAND. , .
, :
- , .
_tWinMain LoadAccelerators, TranslateAccelerator , , , . _tWinMain!
- alt + ( ).
_ .rc . Menu, IDC_MY ( ), .
. , , , , . \alt +
Accelerator , , . ID , (Modifier) alt, (Key) , (Type) ASCII.
|
|
. , .
.
, Shift, Ctrl Alt. , Windows.
, , .
1. ?
2. ?
3. Windows . ?
4. ? ? ?
5. Windows , ?
6. ?
7. ? ? ? ? ?
8. ?
9. ?
10. ?
11. ?
12. ?
13. ?
14. ?
15. ?
16. ?
17. WinMain?
18. hInstance?
19. ?
20. , Windows?
21. WM_COMMAND?
22. LOWORD?
23. HIWORD?
24. wParam, WM_COMMAND?
25. wParam, WM_COMMAND?
26. ?
26. .
27. ?
28. WM_PAINT?
29. WM_PAINT?
30. ?
31. , WM_PAINT / hWnd?
32. ?
33. -?
34. - ?
35. -?
36. -?
37. ?
38. ?
39. , , ?
40. ?
41. ?
42. ?
2
: . .
, .
, (dialog box), .
(controls), . (dialog procedure), , .
|
|
, , . , .
(modal) (modeless).
, . . OK Cancel. .
. . , .
. Windows , .
(Picture control) | , , |
(Static text) | . ( ) . . |
(Group box) | , . |
(Button) | , , - |
(Check box) | , , , . |
(Radio button) | , . . |
(List control) | (), . |
(Edit control) | . . |
(Combo box) | , |
(Scroll bar) | . |
, . , , . :
HWND GetDlgItem(HWND hDlg, // int nIDDlgItem // );
, - 0.
(enabled) (disabled).
.