Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как с помощью API поместить Label на Form?

Delphi , ОС и Железо , Windows

Code:

var
hLabel : HWND ;
...
hLabel := CreateWindow ( 'STATIC', 'test', WS_CHILD or WS_VISIBLE, 0, 0, 200, 40, hWnd, NULL, hInstance, NULL );

Автор ответа: Baa

Примечание: Vit

Скорее всего последний параметр не "NULL", а "Nil" (NULL в паскале - варианта для обозначения пустого поля в базе данных)

Взято с Vingrad.ru http://forum.vingrad.ru


Code:

program Project1;
{©Drkb v.3(2007): www.drkb.ru}
 
uses
Windows,
Messages;
 
const
myClassName= 'myWindow';
 
var
handleWnd, Label1 : THandle;
WndClass: TWndClass;
Msg: TMsg;
 
function WindowProc(Window: HWnd; AMessage, WParam,
LParam: Longint): Longint; stdcall;
begin
WindowProc:= DefWindowProc(Window, AMessage, WParam, LParam);
case AMessage of
{WM_COMMAND: if lParam = Button1 then
MessageBox( 0, 'Вы нажали кнопку!', 'Информация',
MB_OK or MB_ICONINFORMATION); }
WM_DESTROY: Halt;
end;
end;
 
begin
with WndClass do
begin
hInstance := hInstance;
lpszClassName:= myClassName;
style := cs_hRedraw or cs_vRedraw;
hbrBackground:= color_btnface +1;
lpfnWndProc := @WindowProc;
hCursor := LoadCursor(0, idc_Arrow);
hIcon := LoadIcon(0, IDI_EXCLAMATION);
lpszMenuName := NIL;
cbWndExtra := 0;
cbClsExtra := 0;
end;
RegisterClass( WndClass );
handleWnd:= CreateWindow(myClassName, 'Hажми кнопку', ws_OverlappedWindow,
400, 300, 200, 100, 0, 0, hInstance , NIL);
if handleWnd = 0 then
begin
MessageBox( 0, 'Error', NIL, MB_OK );
Exit;
end;
Label1:= CreateWindow( 'Label', 'Text',
WS_VISIBLE or WS_CHILD or WM_SETTEXT,
20, 10, 60, 23, handleWnd, 0, hInstance, nil);
ShowWindow(handleWnd, SW_SHOW);
UpdateWindow(handleWnd);
while GetMessage(Msg, handleWnd, 0, 0) do
begin
TranslateMessage(Msg) ;
DispatchMessage(Msg) ;
end;
end.

Автор ответа: alex-co

Взято с Vingrad.ru http://forum.vingrad.ru

Here's the translation of the content into Russian:

Это код программирования на языке Delphi, который создает простой окно с меткой и кнопкой. Класс имени окна - "myWindow", а текст метки установлен в "Text". Кнопка, при нажатии, отображает сообщение об ошибке, говорящее "Вы нажали кнопку!".

Вот некоторые примечания к коду:

  1. Функция CreateWindow создает новое окно с указанным именем класса, заголовком, стилем и положением.
  2. Функция RegisterClass регистрирует класс окна в операционной системе.
  3. Функция CreateWindowEx создает новый контроль метки с указанным текстом, стилем и положением внутри окна.
  4. Функция ShowWindow отображает окно на экране.
  5. Функция UpdateWindow обновляет окно для отражения любых изменений, сделанных с момента последнего обновления.
  6. Цикл GetMessage работает до тех пор, пока пользователь не закроет окно или не нажмет клавишу. Он обрабатывает сообщения от операционной системы и направляет их в процедуру окна.

Некоторые минорные проблемы с кодом:

  1. В функции WindowProc параметр lParam не используется в случае заявки. Это может вызвать проблемы, если будет отправлено сообщение WM_COMMAND с ненулевым значением lParam.
  2. Поле style записи WndClass установлено в cs_hRedraw or cs_vRedraw, что является недопустимой комбинацией. Оно должно быть одним из этих стиля, а не оба.
  3. Поле hbrBackground записи WndClass установлено в цвет с смещением 1. Это не является валидным значением цвета.

В отношении вашей конкретной вопросы о последнем параметре функции CreateWindow, вы правы, что он должен быть NIL, а не NULL. NULL - это макро в Delphi, представляющее null-пункт, а NIL используется для представления uninitialized или invalid-пункта.

В статье описано, как использовать API для создания формы и поместить на неё метку (Label) в программном обеспечении на языке Pascal.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 08:42:21/0.0059309005737305/0