![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
создание кнопки [D7, WinXP]
Narayan © (2004-04-15 21:39:00)создал кнопку
CreateWindow('BUTTON', 'OK', WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON,50,50,70,24,Form1.Handle,0,HINSTANCE,nil);
Как сделать чтоб при нажатии что-то выполнялось?
Narayan (2004-04-16 14:55:00) [1]2 Rouse_
большое спасибо
DVM (2004-04-16 11:16:00) [2]
> Как сделать чтоб при нажатии что-то выполнялось?
Родительскому окну будут приходить сообщения WM_COMMAND.
Можно еще переопределить оконную процедуру кнопки и в ней ловить сообщения мыши.
Rouse_ (2004-04-16 00:05:00) [3]Вот к примеру (правда создание кнопки идет из ресурса, но происходит создание ListBox)
Ресурс:
<CUT 1020.rc>
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
10 DIALOGEX 0, 0, 130, 60
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_TOPMOST
CAPTION "Test ComboBox Application"
FONT 8, "Helv", 0, 0
BEGIN
PUSHBUTTON "Close", 100,71,38,53,15
PUSHBUTTON "Add string", 105,5,38,53,15
LTEXT "Add string to ComboBox:",IDC_STATIC,7,7,107,10
END
<CUT>
Само приложение:
program Project1;
{$R '1020.res' '1020.rc'}
uses
Windows,
Messages;
var
_Msg : TMsg;
hwnd, combo : Integer;
function WndFunc(Wnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;
var s:String;
i:Integer;
begin
case msg of
wm_destroy :
Begin
postquitmessage(0);
exit;
Result:=0;
End;
WM_QUIT :
Begin
postquitmessage(0);
exit;
Result:=0;
End;
wm_command :
Begin
case loword(wParam) of
100: //Клик по кнопке закрытия
case hiWord(wParam) of
BN_CLICKED :
Begin
postquitmessage(0);
exit;
Result:=0;
End;
end;
105: //Клик по кнопке добавления текста
case hiWord(wParam) of
BN_CLICKED :
Begin
s:='Test string'; //Добавляем исполльзуя ХЭНДЛ!!! комбобокса
SendMessage(combo,CB_ADDSTRING ,0,Longint(@s[1]));
End;
end;
200: //Ловим сообщение на ID !!! комбобокса
case hiWord(wParam) of
CBN_DROPDOWN : //Список раскрылся
begin
Result := 0;
end;
CBN_SELCHANGE : //Выбран определенный пункт
begin
Result := 0;
end;
end;
end;
end;
end;
Result := 0
end;
begin
hwnd := CreateDialog(hInstance,MAKEINTRESOURCE(10),0,@WndFunc);
combo := CreateWindow('COMBOBOX', '', CBS_DROPDOWN or WS_CHILD or WS_VISIBLE, 7, 25, 180, 54, hwnd, 200, hInstance, NiL);
//combo - это его хэндл при помощи него мы работает с комбо //200 - Это его ID на него приходят сообщения
while GetMessage(_Msg, 0, 0, 0) do
begin
TranslateMessage(_Msg);
DispatchMessage(_Msg);
end;
end.
Все интересующие тебя места отмечены жирным...