Форум: "WinAPI";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизКак перерисовать окно на 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c