// modelo -------- BYHOTTEY2004-4-13-0: 18 //
// Site do autor: http://asp.itdrp.com/hottey //
Programdelphi;
usos
Windows,
mensagens;
const
Helostr = 'Helloworld!';
{$ Rdelphi.res}
// Função de processamento de mensagens de janela.
functionMywinProc (hwnd: thandle; umsg: uint; wparam, lparam: cardeal): cardeal; exp
ort; stdcall;
var
HDCA, HDCB: THANDLE; // Descrição do dispositivo identificador de tabela.
Rect: Trect; // Estrutura retangular.
Fonte: hfont;
PS: TPaintStruct; // Estrutura de desenho.
Começar
resultado: = 0;
caseumsgof
Wm_paint:
Começar
HDCA: = BeginPaint (hwnd, ps);
Setbkmode (HDCA, transparente);
Setbkcolor (HDCA, getBKColor (HDCA));
GetClientRect (HWND, RECT); // Obtenha o tamanho da área do cliente da janela.
DrawText (hdca, pchar (hellostr),-1, ret, dt_singLelineordt_centerordt
_VCenter);
// textout (HDC, 100,40, Hellostr, comprimento (Hellostr));
Endpaint (hwnd, ps);
fim;
Wm_create:
Começar
hdcb: = getDC (hwnd);
Fonte: = createfont (45,0,0,0, fw_normal, 0,0, ANSI_CHARSET, out
_default_precis, clip_default_precis,
default_quality, 34, pchar ('arial'));
SelectObject (HDCB, fonte);
Lançado (HWND, HDCB);
fim;
Wm_destroy:
PostQitMessage (0)
outro
// Use a função de processamento de mensagens de janela padrão.
Resultado: = DEFWindowProc (hwnd, umsg, wparam, lparam);
fim;
fim;
// O programa principal começa.
var
Msg: tmsg; // estrutura de mensagem.
HWND, Hinst: Thandle; // Janela do Windows.
Winclass: twndcllassex; // Windows Window Class de classe.
Começar
hinst: = getModuleHandle (nil); // getTheApplicationInstance
Winclass.cbsize: = sizeof (twndcllassex);
Winclass.lpszclassName: = 'MyWindow'; // Nome da classe.
Winclass.style:=cs_hredraworcs_vredraworcs_owNDC;
Winclass.hinstance: = hinst; // o identificador da instância do programa.
// Defina a função de processamento de mensagens de janela.
Winclass.lpfnwndproc: =@mywinproc; // processo de janela.
Winclass.cbclSextra: = 0; // Os dois domínios a seguir são usados na estrutura e janela de classe
A estrutura da janela salva dentro de S
Winclass.cbwndextra: = 0; // reserve algum espaço extra em Winclass.
Winclass.hicon: = loadicon (hinstance, makeIntresource ('mainicon'));
Winclass.hiconsm: = loadicon (hinstance, makeIntresource ('mainicon'));
Winclass.hcursor: = loadcursor (0, idc_arrow);
// getstockObject recebe um objeto gráfico, aqui está para obter o pincel que desenha o fundo da janela, retornando um pincel branco
A alça da criança.
Winclass.hbrbackground: = hbrush (getStockObject (white_brush));
Winclass.lpszmenununame: = nil; // Especifique o menu da classe da janela.
// Registre a classe de janela no Windows.
ifRegisterClassex (winclass) = 0then
Começar
MessageBox (0, 'registrationError!', 'Sdk/api', mb_ok);
Saída;
fim;
// Crie objeto de janela.
hwnd: = createwindowex (
Ws_ex_overlapedwindow, // estilo de janela estendido.
Winclass.lpszclassName, // Nome da classe.
'Hellowindow', // título da janela.
Ws_overlappedwindow, // estilo de janela.
Cw_usedefault, // O canto superior esquerdo da janela é relativo à tela
A posição inicial x no canto superior esquerdo.
0, // .... certo y.
Cw_usedefault, // largura da janela x.
0, // Altura da janela y.
0, // Janela da janela pai.
0, // Janela Menu Janking.
hinst, // Handle Instância do programa.
nil); // Crie ponteiro de parâmetro.
ifhwnd <> 0then
Começar
ShowWindow (HWND, SW_SHOWNORMAL); // Mostrar janela.
UpdateWindow (hwnd); // Janela de instruções para se atualizar.
SetWindowPos (hwnd, hwnd_top mais, 0,0,0,0, swp_nomove+swp_nosize);
fim
outro
MessageBox (0, 'WindOwNotcreated!', 'SDK/API', MB_OK);
// Programa de loop de mensagens principal.
whileGetMessage (msg, 0,0,0) do
Começar
Translatemessage (msg); // Converta certas mensagens de teclado.
DispatchMessage (msg); // Envie mensagens para o processo da janela.
fim;
fim.
> De fato, a programação do Windows é algo que todos que aprendem a escrever programas devem dominar.
O código acima não é tão rápido quanto o novo formulário é usado em Delphi, mas pode dizer isso
As coisas qualificadas podem ajudá -lo a entender melhor o loop de mensagens e outras coisas.
.
> Nota: o código acima é literalmente traduzido da sintaxe do Windows () através da sintaxe C ++ e não há problema após o teste.
Se houver algum erro na anotação, por favor me corrija!^_^
Hottey em 2004-5-19 Site do autor: http://asp.itdrp.com/hottey (por rotina)