ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ (button) срСдствами WinAPI

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎ сообщСниС. MessageBox (hWnd, 'Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ', '', MB_OK); 10, // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π°. НаТмитС здСсь', // надпись Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅. BUTTON', // ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ класс ΠΊΠ½ΠΎΠΏΠΊΠΈ. Код ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ. Result := DefWindowProc (hWnd, uMsg, wParam, lParam); Or bs_PushButton, // стили для ΠΊΠ½ΠΎΠΏΠΊΠΈ. Если это событиС — click. If HiWord (wParam) = bn_Clicked… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ (button) срСдствами WinAPI (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΆΠ΅ использованной Π½Π°ΠΌΠΈ для создания ΠΎΠΊΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CreateWindow. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ класса ΠΎΠΊΠ½Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ класс ΠΊΠ½ΠΎΠΏΠΊΠΈ BUTTON. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ доступныС классы, прСдоставляСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: LISTBOX, COMBOBOX, MEMO, MAINMENU, EDIT, SCROLLBAR, BUTTON, LISTVIEW, STATIC, TREEVIEW, HEADER, TOOLBAR, STATUSBAR, TRACKBAR, UPDOWN, PROGRESS, TABCONTROL, RICHEDIT, POPUPMENU, CHECKBOX, LABEL, GAUGE.

ИзмСним ΠΎΠΊΠΎΠ½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

function WindowProc (hWnd: THandle; uMsg, wParam, lParam: Integer): Integer; stdcall; export;

{функция ΠΎΠΊΠ½Π°}.

begin.

Result := 0;

case uMsg of.

WM_DESTROY: //Ссли uMsg Ρ€Π°Π²Π½Π° WM_DESTROY (ΠΊΠΎΠ΄ закрытия ΠΎΠΊΠ½Π°), Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌΡΡ.

begin.

halt (0);

end;

WM_CREATE: begin.

// созданиС кнопки.

hButton := CreateWindowEx (0,.

'BUTTON', // ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ класс ΠΊΠ½ΠΎΠΏΠΊΠΈ.

'&НаТмитС здСсь', // надпись Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅.

ws_Child or ws_Visible.

or bs_PushButton, // стили для ΠΊΠ½ΠΎΠΏΠΊΠΈ.

  • 10, 10, // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π°
  • 200, 80, // Ρ€Π°Π·ΠΌΠ΅Ρ€

hWnd, // handle родитСля.

id_Button, // ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ (задаСтся программистом).

hInstance,.

nil);

end;

WM_COMMAND:

// провСряСм, ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎ сообщСниС.

if LoWord (wParam) = id_Button then.

// Ссли это событиС — click.

if HiWord (wParam) = bn_Clicked then.

// ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ.

MessageBox (hWnd, 'Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ', '', MB_OK);

end;

Result := DefWindowProc (hWnd, uMsg, wParam, lParam);

end;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ создании ΠΎΠΊΠ½Π° (ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сообщСния WM_CREATE) создаСтся экзСмпляр ΠΊΠ½ΠΎΠΏΠΊΠΈ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… элСмСнтам управлСния, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сообщСния WM_COMMAND, приходящСго Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ. Π’ ΡΡ‚ΠΎΠΌ случаС, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 2 Π±Π°ΠΉΡ‚Π° wParam хранят ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСмСнта, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ 2 — ΠΊΠΎΠ΄ увСдомлСния/события. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сообщСниС WM_COMMAND ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ wParam.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ