Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по WinAPI


Обсолютный ноль ©   (2002-11-07 20:22:00) 

Подскажите пожалуйста пример простой программы с окошком, написанной на WinAPI. P.S. Если не знаете точно то напишите хотяб идею.

Заранее благодарен, Обсолютный НОЛЬ.


Обсолютный ноль   (2002-11-08 06:06:00) [1]

БООООООООЛЬШОЕ спасибо!


Ich Hasse   (2002-11-07 21:18:00) [2]

program CreateWindow;

uses
Windows,
Messages;

var Window : HWND; //ссылка на окно
x,y : Word; //координаты вывода
Width : Word; //ширина
Height : Word; //высота
Class : TWndClass; //класс окна

Report : TMsg;
{$R *.res}

function WindowProc (Window : HWnd; Report, WParam : Word;
LParam : LongInt) : LongInt; stdcall;
begin
WindowProc := 0;
case Report of
wm_Create : begin
{Тут идет код который совершается при создании}
end;
wm_Destroy : begin
UnregisterClass("Class",Class.hInstance);
PostQuitMessage (0);
Exit;
end;
wm_Paint : begin
{Код при отрисовке}
end;
wm_Size : begin
{Код при изменении размеров}
end;
wm_timer : {Событие на таймер}
wm_keydown: begin
if wParam = VK_ESCAPE then PostMessage(Window,WM_CLOSE, 0, 0);
end;
end; //case
WindowProc := DefWindowProc (Window, Report, WParam, LParam);
end;


begin
With Class do begin
Style:= cs_DblClks or cs_HRedraw or cs_VRedraw;
lpfnWndProc:= @WindowProc;
cbClsExtra:= 0;
cbWndExtra:= 0;
hInstance:= 0;
hIcon:= LoadIcon (0, idi_Application);
hCursor:= LoadCursor (0, idc_Arrow);
hbrBackground:= COLOR_BTNFACE+1;;
lpszMenuName:= "";
lpszClassName:= "Class";
end;

RegisterClass(glClass);
// 640 и 480 базовые размеры
// далее мы делаем клиентскую область таких размеров при окне
// с большим заголовком
Width := 640 + GetSystemMetrics( SM_CXFIXEDFRAME ) * 2;
Height := 480 + GetSystemMetrics( SM_CYCAPTION ) + GetSystemMetrics( SM_CYFIXEDFRAME ) * 2;

x := round( (GetSystemMetrics( SM_CXSCREEN ) - glWidth) / 2 );
y := round( (GetSystemMetrics( SM_CYSCREEN ) - glHeight) / 2 );

Window:=CreateWindow("Class","Your Caption",
ws_overlappedwindow or ws_visible,x,y,glWidth,glHeight,
0, 0, glClass.hInstance, nil );

UpdateWindow (Window);

While GetMessage (Report, 0, 0, 0) do begin
TranslateMessage (Report);
DispatchMessage (Report);
end;
Halt (Report.wParam);

end.


Будут вопросы шли на мыло


Ich Hasse   (2002-11-07 21:18:00) [3]

А код сам добавишь!!!


Наверх

Титульная страница Поиск, карта сайта Написать письмо