Главная страница
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
1-54593
Slonic75
2003-04-07 11:05
2003.04.17
Как сделать что бы приложение не выгружалось при Log off?


1-54691
незнайка
2003-04-04 09:05
2003.04.17
динамический массив. чудеса.. :(


3-54458
Алекс
2003-03-28 15:07
2003.04.17
Синхнонизация данных клиента и сервера


1-54655
Сашко
2003-04-07 02:11
2003.04.17
Некорректная работа спамятью


14-54893
Vlad Oshin
2003-04-02 09:35
2003.04.17
Помогите! Нужна программа для оценки железа компа.