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

Вниз

WinMain   Найти похожие ветки 

 
BJValentine ©   (2004-04-22 13:37) [0]

Мастера, хочу научиться програмить используя только API. Кто-нить может мне скинуть простейшее приложение API?


 
DVM ©   (2004-04-22 13:42) [1]

program p1;
begin
end.


 
BJValentine ©   (2004-04-22 13:44) [2]

А так, чтобы было главное окно и оно могло обрабатывать сообщения?


 
DVM ©   (2004-04-22 13:49) [3]

program winmin;

uses windows, messages;
{!Модули windows и messages  самые необходимые — они обязательно должны быть
объявлены в начале каждой Вашей программы!}

var   wc : TWndClassEx;//Переменная шаблона класса окна
MainWnd : HWND;       //Описатель главного окна
   Mesg : TMsg;       //Переменная для цикла сбора сообщений

{  Далее следует оконная процедура главного окна. Обратите внимание на служебное
 слово stdcall оно вынуждает компилятор генерировать особый вид кода, который
 может быть вызван любой windows-программой, без этого служебного слова
 программа не сможет  работать вообще!}
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult;
stdcall;
Begin
{Далее происходит цикл обработки сообщений}
case msg of
wm_destroy ://Сообщение посылаемое при уничтожении окна
 Begin
  postquitmessage(0);
  Result:=0;
  exit;
 End;

 else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;

End;
{Переменные xPos,yPos,nWidth,nHeight в принципе не нужны, однако я их завел
(и вам рекомендую) для лучшей читабельности программы}
var xPos,yPos,nWidth,nHeight : Integer;

begin
{  Далее идет заполнение шаблона класса окна
 подробное описание полей этой записи см. после текста программы}
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="WinMin : Main";

RegisterClassEx(wc);//Регистрация нового класса в системе
{  Заполнение переменных xPos,yPos,nWidth,nHeight}
xPos:=100;
yPos:=150;
nWidth:=400;
nHeight:=250;

{  Создание главного окна}
MainWnd:=CreateWindowEx(
0,                  //флаги расширенных стилей
"WinMin : Main",    //имя класса окна, данное при заполнении структуры wc
"Win Min",          //заголовок окна
ws_overlappedwindow,//флаги стилей окна
{подробнее о стилях см. после текста программы}
xPos,               //горизонтальная позиция окна
yPos,               //вертикальная позиция окна
nWidth,             //ширина окна
nHeight,            //высота окна
0,                  //описатель родительского окна (parent) или окна-владельца (owner)
0,                  //описатель меню окна (меню нет, нет и описателя)
Hinstance,          //описатель приложения
nil                 //address of window-creation data
);

ShowWindow(MainWnd,CmdShow);//Отображаем окно

//Цикл обработки сообщений
//он может слегка видоизменяться, но эти строчки присутсвуют всегда
While GetMessage(Mesg,0,0,0) do
begin
 TranslateMessage(Mesg);
 DispatchMessage(Mesg);
end;

end.


 
BJValentine ©   (2004-04-22 14:01) [4]

Огромное спасибо! И за коментарии тоже. Буду разбираться сейчас.



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
4-1083041308
Sirus
2004-04-27 08:48
2004.06.06
Размеры приложения типа Application Bar...


3-1084854673
AVP_opck
2004-05-18 08:31
2004.06.06
как сделать чтоб поле calculated один раз расчиталось запомнило


14-1085057257
Lessa
2004-05-20 16:47
2004.06.06
Извечная проблема трея и таскбара


6-1082121800
Begginer
2004-04-16 17:23
2004.06.06
Сетевые принтера


14-1085070190
panov
2004-05-20 20:23
2004.06.06
Жуть.