Главная страница
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.066 c
14-1084728062
Igor_thief
2004-05-16 21:21
2004.06.06
LineDDA


1-1085585341
_mandrake_
2004-05-26 19:29
2004.06.06
Как прикрутить ProgressBar к копированию файла?


4-1083050607
luka
2004-04-27 11:23
2004.06.06
клавиатура и мышь


9-1076162450
Pavel
2004-02-07 17:00
2004.06.06
TEditпод DelphiX


1-1085364117
Jedu
2004-05-24 06:01
2004.06.06
Скроллинг на главной форме...