PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Button mittels API Call


Kennung Eins
2002-07-07, 00:08:38
Code ist in Object Pascal, ist aber auch für C++'ler leicht zu verstehen, da es auf Grund des API Calls nunmal das selbe in grün ist ;)

Also, hier erstmal ein bisschen Code:

function WndProc(hWnd: HWND;message: UINT;wParam: WPARAM;lParam: LPARAM): LRESULT; stdcall;
const ID_CONVERT = 1; // ID to the handler (?) of the 1st Button
ID_CONVERT2 = 2; // ID to the handler (?) of the 2nd Button
(...)
begin

(...)

case (message) of // Tells Windows we want to check the message

WM_CREATE: begin

CreateWindow('BUTTON', 'Button2', WS_CHILD or WS_VISIBLE or BS_AUTOCHECKBOX,
10, 40, 80, 25, hwnd, HMENU(ID_CONVERT2),
hInstance, nil);

end;

WM_COMMAND:

case LO(wParam) of

(...)

ID_CONVERT2: begin
MessageBox(0,'Something has changed','Information',MB_OK or MB_ICONINFORMATION);
end;
end;

Es wird eine Checkbox in einem bestehenden Fenster dargestellt.
So, nun hier das Problem:

Wenn ich auf die Checkbox klicke wird ausgeführt, was unter ID_CONVERT2 angegeben ist.

Toll.

Doch ich will ja nicht, daß mit jedem Klick da drauf die selbe Aktion geschieht, sondern es sollen, (wie es sich für eine Checkbox gehört) zwei Aktionen verwaltet werden.
Die eine ist dran, wenn das Häcken gesetzt ist, die andere, wenn es aus ist.

Wie krieg ich raus, ob ein Häckchen gesetzt ist?

Modulor
2002-07-07, 00:43:24
Läßt sich der Status der Checkbox nicht abfragen? Unter Delphi gibt es die Eigenschaft State, die die Werte unchecked, checked oder grayed enthält.

Xmas
2002-07-07, 04:30:44
Per API:

IsDlgButtonChecked (hwnd, ID_CONVERT2);
//returntyp: UINT

Identisch mit:

SendMessage (GetDlgItem (hwnd, ID_CONVERT2), BM_GETCHECK, 0, 0);
//returntyp: LRESULT

mögliche Rückgabewerte:
BST_CHECKED
BST_INDETERMINATE
BST_UNCHECKED

TBird
2002-07-07, 09:00:30
Xmas,

Du hast noch eine Kleinigkeit vergessen:

MSDN Library Visual Studio 6.0

If the button has any other style, the return value is zero.


;)

Kennung Eins
2002-07-07, 09:54:53
Hey super, danke!!

Es funzt :)