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

Вниз

Вопрос по WinAPI   Найти похожие ветки 

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

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

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


 
Ich Hasse ©   (2002-11-07 21:18) [1]

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) [2]

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


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

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



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
14-61799
3asys
2002-11-25 20:15
2002.12.19
Как работать с архиватором из Delphi?


3-61416
Sirus
2002-11-29 12:42
2002.12.19
Можно ли перехватить сообщение об ошибке


1-61670
pumba
2002-12-08 09:14
2002.12.19
Третья сложная задача!!!! Помогите хотябы с одной!!! Limit часов!


3-61498
serg_r_a
2002-12-02 12:18
2002.12.19
Открытие БД без индекса


1-61691
Валентин
2002-12-09 02:02
2002.12.19
Соеденить dos & windows