// Шаблон -------- BYHOTTEY2004-4-13-0: 18 //
// Авторский веб -сайт: http://asp.itdrp.com/hottey //
ProgramDelphi;
Использование
Windows,
Сообщения;
констант
HelloStr = 'Helloworld!';
{$ Rdelphi.res}
// Функция обработки сообщений окон.
functionmywinproc (hwnd: thandle; umsg: uint; wparam, lparam: cardinal): cardinal; exp
ort; stdcall;
вар
HDCA, HDCB: Thandle; // Описание устройства.
Прямо: TRECT; // прямоугольная структура.
Шрифт: hfont;
PS: TPAINTSTRUCT; // Структура рисования.
Начинать
Результат: = 0;
каземсгоф
Wm_paint:
Начинать
hdca: = startpaint (hwnd, ps);
SetBKMode (HDCA, прозрачный);
Setbkcolor (hdca, getbkcolor (hdca));
GetClientRect (hwnd, rect); // Получить размер области клиента.
DrawText (HDCA, PCHAR (HelloStr),-1, Rect, DT_SINGLELINEORDT_CENTERORDT
_Vcenter);
// Textout (HDC, 100,40, HelloStr, длина (HelloStr));
Endpaint (hwnd, ps);
конец;
Wm_create:
Начинать
HDCB: = getDC (hwnd);
Font: = CreateFont (45,0,0,0, FW_NORMAL, 0,0, ANSI_CHARSE, OUT
_default_precis, clip_default_precis,
default_quality, 34, pchar ('arial'));
SelectObject (HDCB, шрифт);
Выпущенные (HWND, HDCB);
конец;
Wm_destroy:
Postquitmessage (0)
еще
// Использование функции обработки сообщений окна по умолчанию.
Результат: = defWindowProc (hwnd, umsg, wparam, lparam);
конец;
конец;
// начинается основная программа.
вар
MSG: TMSG; // Структура сообщений.
Hwnd, Hinst: Thandle; // ручка Windows Windows.
Winclass: Twndclassex; // Структура класса класса Windows Windows.
Начинать
hinst: = getModuleHandle (nil); // getTheApplicationInstance
Winclass.cbsize: = sizeof (twndclassex);
Winclass.lpszclassname: = 'mywindow'; // Имя класса.
Winclass.style:=cs_hredraworcs_vredraworcs_owndc;
Winclass.hinstance: = hinst; // Ручка экземпляра программы.
// Установить функцию обработки сообщений окна.
Winclass.lpfnwndproc: =@mywinproc; // Процесс окна.
Winclass.cbclsextra: = 0; // Следующие два домена используются в структуре и окне класса
Окна структура, сохранившаяся внутри S
Winclass.cbwndextra: = 0; // зарезервировать в нем дополнительное пространство.
Winclass.hicon: = loadicon (hinstance, makeintresource ('mainicon'));
Winclass.hiconsm: = loadicon (hinstance, makeintresource ('mainicon'));
Winclass.hcursor: = loadcursor (0, idc_arrow);
// getStockObject Получает графический объект, вот чтобы получить кисть, которая рисует фон окна, возвращая белую кисть
Ручка ребенка.
Winclass.hbrbackground: = hbrush (getStockObject (white_brush));
Winclass.lpszmenuname: = nil; // Укажите меню класса окна.
// Зарегистрировать класс окон в Windows.
ifregisterclasssex (winclass) = 0then
Начинать
MessageBox (0, 'RegistrationError!', 'Sdk/api', mb_ok);
Выход;
конец;
// Создать окно -объект.
hwnd: = createwindowex (
WS_EX_OVERLACTWINDOW, // расширенный стиль окна.
Winclass.lpszclassname, // Имя класса.
«Hellowindow», // window title.
Ws_overlappedwindow, // window style.
CW_USEDEFAULT, // Верхний левый угол окна относительно экрана
Начальная позиция x в верхнем левом углу.
0, // .... справа y.
CW_USEDEFAULT, // Ширина окна x.
0, // высота окна y.
0, // Ручка родительского окна.
0, // Ручка с меню окон.
HINST, // Руководство экземпляра программы.
nil); // Создать указатель параметров.
ifhwnd <> 0then
Начинать
ShowWindow (hwnd, sw_shownormal); // show window.
UpdateWindow (hwnd); // Окно инструкции, чтобы освежить себя.
SetWindowpos (hwnd, hwnd_top, 0,0,0,0, swp_nomove+swp_nosize);
конец
еще
MessageBox (0, 'windownotcreated!', 'Sdk/api', mb_ok);
// Основная программа цикла сообщений.
wholeGetMessage (MSG, 0,0,0) DO
Начинать
TranslateMessage (MSG); // Конвертировать определенные сообщения клавиатуры.
DispatchMessage (MSG); // Отправлять сообщения в процесс окна.
конец;
конец.
> На самом деле, программирование Windows - это то, что каждый, кто учится писать программы.
Приведенный выше код не так быстр, как в Delphi используется форма New->, но он может сказать вам это
Квалифицированные вещи могут помочь вам лучше понять цикл сообщений и другие вещи.
Полем
> Примечание. Приведенный выше код буквально переведен с Windows Programming () через синтаксис C ++, и после тестирования нет проблем.
Если в аннотации есть какие -либо ошибки, пожалуйста, поправьте меня!^_^
Hottey на 2004-5-19 автора Веб-сайт: http://asp.itdrp.com/hottey (по рутине)