Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

Создание окна и кнопки на нем   Найти похожие ветки 

 
unKNOWN uSER   (2002-01-18 00:19) [0]

Можно ли с помощью WinAPI создать окно, а на нем кнопку, при нажатии на которую окно закрывается ?

Ели кто знает как это сделать, то приведите пожалуйста кусок кода.


 
Adder   (2002-01-18 04:23) [1]

http://www.ict.nsc.ru/~cancel/delphi/index.html


 
solo   (2002-01-18 14:14) [2]

program Alphabet;
uses
Windows,
Messages;

const
cClassName = "Alphabet"; // Имя класса окна

var
MainHandle : THandle; //индентификатор окна
btnHandle : THandle; //идентификатор кнопки
WndClass: TWndClass; //структура WndClass
Msg: TMsg; //структура для принятия сообщений


procedure CloseWND;
//Закрываем программу
begin
SendMessage(MainHandle, WM_CLOSE, 0, 0);
end;


function WindowProc(hWnd: THandle; uMsg, wParam, lParam: Integer): Integer; {функция окна}
stdcall; export;
//Оконная функция
begin
Result := 0;
case uMsg of
WM_DESTROY: //если uMsg равна WM_DESTROY(код закрытия окна) то закрываемся
begin
postquitmessage(0);
exit;
end;
WM_COMMAND:
if LParam = btnHandle then CloseWND;
end;
Result := DefWindowProc(hWnd, uMsg, wParam, lParam); //удалить остальные сообщения
end;


procedure CreateButton;
// Создание кнопки
begin
btnHandle:=CreateWindow("Button", "Закрыть",
BS_CENTER or BS_VCENTER or WS_CHILD or WS_VISIBLE,
110, 150, 80, 25,
mainHandle, 0, hInstance, nil);
end;


procedure CreateMainForm;
{Создание главного окна программы}
begin
FillChar(WndClass, SizeOf(WndClass), 0); //заполняем структуру нулями
with WndClass do begin
hInstance := SysInit.hInstance; //Обязательный параметр, индентификатор вашего приложения
lpszClassName := cClassName; //имя класса
lpfnWndProc := @WindowProc; //имя функции окна
hbrBackground := COLOR_WINDOW;// //способ заливки клиентской области
hCursor := LoadCursor(0,idc_arrow);//Задаем стандартный курсор
end;
RegisterClass(WndClass); //регистрируем класс
MainHandle := CreateWindow(cClassName,
"",
WS_THICKFRAME or WS_SYSMENU or WS_MAXIMIZEBOX or WS_MINIMIZEBOX or WS_VISIBLE,
0, 0,
300, 250,
0, 0, hInstance, NIL); //создаем окно
if MainHandle = 0 then begin //если произошла ошибка, то выходим
MessageBox(0, "Initialisation failed", NIL, ID_OK);
Exit;
end;
end;

begin
CreateMainForm;// Создание главного окна программы
CreateButton;//Создаем кнопку

while GetMessage(Msg, 0, 0, 0) do
begin //получаем сообщение
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.


 
Dimaond Cat   (2002-01-19 00:47) [3]

немного корявый пример
1)
procedure CloseWND;
//Закрываем программу
begin
SendMessage(MainHandle, WM_CLOSE, 0, 0);
end;
Зачем самому себе отсылать сообщение о закрытии
2)
Зачем в WindowProc результу присваивать 0 когда он по любому потом получит другое значение от DefWindowProc
3)
Ты зарегистрировал класс, а при закрытии программы регистрацию не снял, есть идея что твоя процедура CloseWND смотрелась бы лучше так
procedure CloseWND;
begin
UnRegisterClass(////);
ExitProcess(///);
end;
4)
А зачем Halt(Msg.wParam); (это реально интересно, чего ты хотел добиться?)








 
Ghost.   (2002-01-19 12:36) [4]

если надо сразу закртывать и обработать закрытиеююможет лучше так

program Project1;

uses
WinTypes, WinProcs;

begin
MessageBox(GetActiveWindow, "сообщение", "подпись",
MB_ICONINFORMATION OR MB_OK)
end.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
3-57316
boogier
2002-02-19 12:25
2002.03.18
Можно ли при помощи выполнить запрос асинхронно?


14-57495
pus
2002-02-02 07:20
2002.03.18
Срочно нужна помощь...!


14-57496
GoodBoy II
2002-02-02 22:13
2002.03.18
Кто знает какой-нибудь хорошенький Nет браузер с поддержкой скинов?


3-57321
AndrewK
2002-02-19 17:48
2002.03.18
Как составить запрос


1-57447
AnIg
2002-03-01 13:00
2002.03.18
В поисках компонента работы с графиками функций. Что посоветуете?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский