![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как с помощью WinAPI создать окно с кнопкой [D5, Win95/98, NT4, Win2k]
Long © (2003-02-17 18:15:00)Как с помощью WinAPI создать окно с кнопкой (на которую я смогу нажать и отработать это нажатие)
Long (2003-02-18 13:05:00) [1]СПАСИБО
Masik's (2003-02-18 02:05:00) [2]program WinApi;
uses
Windows, Messages;
{$R *.RES}
const
IDC_EXIT = 100; // идентификатор сообщения для кнопки
var
Handle: HWnd; // дескриптор окна
Instance: HWnd; // дескриптор потока
Msg: TMsg; // тип сообщения
WindowClass: TWndClass; // тип окна
{ процедура обработки сообщений потока}
function WindowProc(AWnd, Msg, Wparam, Lparam: LongInt): LongInt; stdcall;
var
hBtn: Hwnd; // дескриптор кнопки
begin
// обработка сообщений по умолчанию
Result := DefWindowProc(AWnd, Msg, Wparam, Lparam);
case Msg of
WM_Command :
case wParam of
IDC_Exit : DestroyWindow(Handle);// если отправителем
// сообщения является
end; // кнопка, то закрываем
// главное окно
WM_Destroy : PostQuitMessage(0); // а при закрытии главного
// окна закрываем приложение
end;
end;
begin
// определяем класс главного окна
Instance := GetModuleHandle(nil);
WindowClass.style := CS_HRedraw or CS_VRedraw;
WindowClass.lpfnWndProc := @WindowProc;
WindowClass.HInstance := Instance;
WindowClass.HbrBackground := COLOR_BTNFACE+1;
WindowClass.lpszClassName := "MyApp";
WindowClass.HCursor := LoadCursor(0, IDC_Arrow);
WindowClass.HIcon := LoadIcon(Instance,nil);
WindowClass.lpszMenuName := "MyApp";
RegisterClass(WindowClass);
// создаем главное окно\
Handle := CreateWindowEx(WS_EX_WINDOWEDGE,"MyApp","My Application", WS_OVERLAPPEDWINDOW, 200, 200, CW_USEDEFAULT,
CW_USEDEFAULT, 0, 0, Instance,nil);
// показываем главное окно
ShowWindow(Handle, SW_SHOW);
// обновляем клиентскую область главного окна
UpdateWindow(Handle);
// создаем кнопку
hBtn := CreateWindow("BUTTON","Exit",WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON,250,250,100,32, Handle,IDC_Exit,Instance,nil);
// показываем кнопку
ShowWindow(hBtn,SW_Show);
// передаем фокус
SetFocus(hBtn);
// если в очереди сообщений существует сообщение,
// то обрабатываем их
while GetMessage(Msg,0,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.