Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

Как с помощью 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 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-54891
NightCold
2003-04-02 13:23
2003.04.17
Listbox & edit1


6-54778
Trix)(
2003-02-19 22:01
2003.04.17
IP


7-54923
Arez
2003-02-27 11:23
2003.04.17
Как записать компакт диск?


1-54635
Opera
2003-04-08 06:37
2003.04.17
Перемещение формы


3-54405
Allexey
2003-04-01 10:53
2003.04.17
В форуме я встретил следующее утверждение: