Форум: "WinAPI";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизКак с помощью WinAPI создать окно с кнопкой Найти похожие ветки
← →
Long (2003-02-17 18:15) [0]Как с помощью WinAPI создать окно с кнопкой (на которую я смогу нажать и отработать это нажатие)
← →
Masik's (2003-02-18 02:05) [1]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.
← →
Long (2003-02-18 13:05) [2]СПАСИБО
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c