: Windows-
, , , , , . , . Windows, , WM_COMMAND, .
, WM_COMMAND. . :
LOWORD(wParam) - ( UINT);
HIWORD(wParam) - ( UINT);
lParam - ( HWND).
- , CreateWindow, .
- , Windows CreateWindow.
- , , .
, , Windows : BN_ - button, EN_ - edit, LBN_ - listbox, CBN_ - combobox SB_ - scrollbar.
, - ID_button:
case WM_COMMAND:
{ UINT idCtl=LOWORD(wParam); //
UINT code=HIWORD(wParam); //
HWND hChild=(HWND)lParam; //
if(idCtl==ID_button&&code==BN_CLICKED)
{
//
CloseWindow(hWnd); // -
}
}; return 0;
, . .
- ( WM_),
, , Windows : BM_ - button, EM_ - edit, LB_ - listbox, CB_ - combobox. scrollbar Set/Get - WinAPI.
.
- - . PostMessage. , , . PostMessage .
- - , . SendMessage. PostMessage SendMessage , .
( HWND) ( UINT), . .
|
|
- hWndChild , :
UINT id=GetWindowLong(hWndChild,GWL_ID);
- ( Dlg , ):
UINT id=GetDlgCtrlID(hWndChild);
- id , :
HWND hWndChild=GetDlgItem(hWndParent,id);
hWnd edit. c hWndEdit (5 ):
static UINT ID_edit=3;
static HWND hWndEdit;
...
hWndEdit=CreateWindow("edit",NULL,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS| WS_BORDER|ES_LEFT,
x,y,width,height,hWnd,(HMENU)ID_edit,hInst,NULL);
...
SendMessage (hWndEdit,EM_LIMITTEXT,5,0L);
...
. , ; , .
- : .
, <Tab> <Shift+Tab>.
, (window subclassing, , ).
- Windows. , GetWindowLong, GWL_WNDPROC.
SetWindowLong , .
- , Windows , , .
, , <Tab> <Shift+Tab> SetFocus ( ) . CallWindowProc.
( button)
|
|
WM_COMMAND BN_CLICKED. , - . :
case WM_COMMAND:
{ UINT idCtl=LOWORD(wParam); // .
UINT code=HIWORD(wParam); //
HWND hChild=(HWND)lParam; // .
if(idCtrl==ID_button&&code==BN_CLICKED)
{
// ,
// ID_button
...
}
}; return 0;
BS_3STATE | , : ( ), ( ), ( ) | |
BS_AUTO3STATE | BS_3STATE, | |
BS_AUTOCHECKBOX | , : . | |
BS_AUTORADIOBUTTON | , : ( ) ( ). | |
BS_CHECKBOX | , : . | |
BS_DEFPUSHBUTTON | ||
BS_GROUPBOX | , . . | |
BS_LEFTTEXT | , , , , | |
BS_OWNERDRAW | , , | |
BS_PUSHBUTTON | ||
BS_RADIOBUTTON | , : . | |
BS_USERBUTTON | , BS_OWNERDRAW. . SDK Windows 3.1, windows.h |
:
- BM_GETCHECK BM_SETCHECK - / - -;
- BM_GETSTATE BM_SETSTATE - / ;
- BM_SETSTYLE - .
,
- , , WM_CTLCOLORBTN.
- , , , , .
, , , .
- (push buttons) , , CreateWindow.
- /. , BS_PUSHBUTTON BS_DEFPUSHBUTTON ( DEF default).
- .
- , , BS_DEFPUSHBUTTON .
, , . 0
|
|
, , WM_COMMAND BN_CLICKED.
, BM_SETSTATE. :
SendMessage(hWndButton,BM_SETSTATE,1,0l); // wParam=1
:
SendMessage(hWndButton,BM_SETSTATE,0,0l); // wParam=0
BM_GETSTATE. TRUE, FALSE ( 0), :
int press= SendMessage(hWndButton,BM_GETSTATE,0,0l);
if(press) { /* */ }
else { /* */ }
. /, BM_GETCHECK BM_SETCHECK .
-
- (check boxes) ( BS_LEFTTEXT, ).
, , : ( ); ( ).
- , . BS_CHECKBOX BS_AUTOCHECKBOX.
BS_CHECKBOX , BM_SETCHECK. WM_COMMAND BN_CLICKED ID_button :
case WM_COMMAND:
{ UINT idCtl=LOWORD(wParam); // .
UINT code=HIWORD(wParam); //
HWND hChild=(HWND)lParam; // .
if(idCtrl==ID_button&&code==BN_CLICKED)
{
int cur_label= SendMessage(hWndButton, BM_GETCHECK,0,0l);
SendMessage(hChild, BM_SETCHECK,(WPARAM)(!cur_label),0l);
}
}; return 0;
BS_AUTOCHECKBOX , WM_COMMAND.
( ), BM_SETCHECK c wParam, 1 ( 0 ):
SendMessage(hWndButton,BM_SETCHECK,1,0l);
, BM_GETCHECK:
int iCheck=SendMessage(hWndButton,BM_GETCHECK,0,0l);
TRUE ( 0), () FALSE ( 0), .
BS_3STATE BS_AUTO3STATE. , , BM_SETCHECK , 2.
- , . .. - . , .
-
|
|
- - (radio buttons, -) , , . , .
- BS_RADIOBUTTON BS_AUTORADIOBUTTON, . -, , . , -, .
WM_COMMAND BN_CLICKED - ID_button, , BM_SETCHECK wParam, 1. , BM_SETCHECK wParam, 0:
case WM_COMMAND:
{ UINT idCtl=LOWORD(wParam); // .
UINT code=HIWORD(wParam); //
HWND hChild=(HWND)lParam; // .
if(idCtrl==ID_button&&code==BN_CLICKED)
{
SendMessage(hChild,BM_SETCHECK,1,0l);
// -
SendMessage(hWndOtherButton,BM_SETCHECK,0,0l);
...
}
}; return 0;
( static)
- - , static.
: , WM_COMMAND. .
- .
CreateWindow. static , :
static UINT ID_static=2;
static HWND hWndStatic;
...
hWndStatic=CreateWindow("static",NULL,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS| SS_GRAYRECT,
x,y,width,height,
hWndParent,(HMENU) ID_static,hInst,NULL);