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

Вниз

Как перерисовать окно на WinAPI?   Найти похожие ветки 

 
maker ©   (2003-11-04 20:16) [0]

Помогите разобраться, есть простейший пример создания приложения на WinAPI. Вроде бы по таймеру должны менятся цифры в заголовке окна, которым управляет таймер:

program Main;

uses
Windows, Messages, SysUtils;

var
Tm:Uint;

//обработка сообщений
function WindowProc (Window: HWND; Message, WParam: Cardinal;
LParam: Cardinal): Longint; stdcall;
var
ps : PaintStruct;
DC : HDC;
a,bc:integer;
begin
case Message of
WM_MOUSEMOVE:
begin
if (LoWord(lParam)<190)and(HiWord(lParam)<10) then
begin
ReleaseCapture;
SendMessage(window, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
end;
WM_LBUTTONDOWN:
begin
//Усли курсор у кнопки выхода
if (LoWord(lParam)>190)and(HiWord(lParam)<10) then
WindowProc(window,$0002,0,0);
end;
$0002:
begin
PostQuitMessage(0);
Result:=0; Exit;
end;
WM_Paint:
begin
//Нарисуемся!
dc:=BeginPaint (Window, ps);
try
TextOut(dc,0,0,PChar(Inttostr( Random(100)+1)),20);
finally
EndPaint (Window, ps);
end;
end;
WM_Timer:
begin
UpdateWindow(Window); //Вроде-бы должно переривовываться окно (WM_Paint), но...
end;
end;
Result := DefWindowProc (Window, Message, WParam, LParam);
end;

var WClass : WNDCLASS;
OplayHWND : HWND;
oPlayMsg : MSG;
lpMsgBuf : PChar;
begin
WClass.hInstance := HInstance;
WClass.hIcon := 0;
WClass.hCursor := LoadCursor (0, IDC_ARROW);
WClass.hbrBackground := COLOR_BTNFACE+1;
WClass.lpfnWndProc := @WindowProc;
WClass.lpszClassName := "Fly";
if RegisterClass (WClass) = 0 then begin
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,
nil, GetLastError(), 0, @lpMsgBuf, 0, nil);
MessageBox(HWND_Desktop,lpMsgBuf, "Ошибка", MB_ICONSTOP);
Exit;
end;
OplayHWND := CreateWindowEx (0, "Fly", "FlyWin",
WS_POPUP,470, 470, 200, 200, 0, 0, HInstance, nil);
if OplayHWND = 0 then begin
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,
nil, GetLastError(), 0, @lpMsgBuf, 0, nil);
MessageBox(HWND_Desktop,lpMsgBuf, "Ошибка", MB_ICONINFORMATION);
Exit;
end;
ShowWindow (OplayHWND, SW_SHOWNORMAL);
SetTimer(OPlayHWND,0,100,nil);
while GetMessage(OplayMsg, 0, 0, 0) do begin
TranslateMessage (OplayMsg);
DispatchMessage(OplayMsg);
end;
end.


Может кто знает, что не так?


 
ZrenBy ©   (2003-11-04 20:34) [1]

InvalidateRect(Window,nil,True);


 
maker ©   (2003-11-04 20:41) [2]

ZrenBy, Спасибо!



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

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

Наверх




Память: 0.47 MB
Время: 0.018 c
1-11872
ruslan_as
2003-12-15 11:51
2004.01.05
Помогите посчитать часы


1-11862
BOA_KAA
2003-12-18 16:59
2004.01.05
Порядок обхода компонент


14-12046
Думкин
2003-12-11 04:42
2004.01.05
С днем рождения! 11 декабря.


3-11782
T
2003-12-09 17:24
2004.01.05
Как выделить месяц в запросе?


1-11950
mefisto
2003-12-17 17:41
2004.01.05
TMainmenu ?