Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизTextOut в win2000 Найти похожие ветки
← →
AllDer (2004-09-10 16:48) [0]проблемы с обнавлением текста
форма апи-ставлю
таймер SetTimer(hwnd,1,10000,@UP);
procedure UP; // тут текст выводится
begin
TextOut( hdc,0,0,PChar(sizedisk),4);
end;
sizedisk-меняющий текст
все идеально работает в Win98,текст меняется.
В Win2000 c тем же! кодом,работает плохо,
текст меняется не через 10 сек,а вобщее не меняется,
либо через 2 минуты,прописка
TextOut( hdc,0,0,PChar(sizedisk),4);
updateWindow(hwnd); не дает результата
под XP не пробывал,но возможен глюк
Может не так работаю с рисованием ?
← →
MetalFan © (2004-09-10 17:19) [1]а могит система загружена?
← →
Kind (2004-09-10 22:08) [2]A hdc у тебя какой?
← →
AllDer (2004-09-10 22:27) [3]>A hdc у тебя какой?
в смысле ?
получаю так hdc:=getDC(hwnd);
где hwnd:=CreateWindow(..главное окно
как бы еще обновить,
выяснил что с тем работает кодом!
а не работает с трейдом в Win2000 (win98 - все ОК!)
может потому что у меня это в триде крутится,
procedure UP;stdcall; // тут текст выводится
begin
TextOut( hdc,0,0,PChar(sizedisk),4);
end;
запуск естественно CreateThread(
сам то он выполняется,а вот обновление не синхронное!
← →
AllDer (2004-09-11 14:53) [4]да действительно не обнавляется,если,только
окно какое нубудь поверху не пустить(поверх моего),а потом
свернуть-тогда обновится
!Код (скомплируйте и посмотрите в Win2000\XP)
для проверочки я повесил секундное обнавление
и убрал все лишнее
в Win98 секунды идут,в других плохо,
что посоветуете эксперты?
uses
Windows, Messages;
implementation
const
AppName = "TForm1";
var
hWnd: DWord;
Msg: TMsg;
WndClass: TWndClassEx;
hdc:dword;
disksize:cardinal;
id:dword;
test:word; // Тест вывода на экран
//-----------------------------------------------------
function WndFunc(hWnd, Msg: DWord; wParam, lParam: integer): integer; stdcall;
begin
if Msg = WM_Destroy
then begin
PostQuitMessage(0);
Result := 0;
end
else Result := DefWindowProc(hWnd, Msg, wParam, lParam);
end;
procedure UP;stdcall; // проверка вывода
label a;
var
buf:string;
begin
a:
sleep(800);
test:=test+1; // test count
str(test,buf);
TextOut( hdc,0,0,PChar( buf),5);
UpdateWindow(hwnd);
goto a;
end;
begin
WndClass.cbSize:=sizeof(WndClass);
WndClass.style:=CS_GLOBALCLASS;
WndClass.lpfnWndProc:=@WndFunc;
WndClass.cbClsExtra:=0;
WndClass.cbWndExtra:=0;
WndClass.hInstance:=HInstance;
WndClass.hIcon:=LoadIcon(0,0);
WndClass.hCursor:=LoadCursor(0,idc_arrow);
WndClass.hbrBackground:=COLOR_BTNFACE+1;
WndClass.lpszMenuName:=nil;
WndClass.lpszClassName:=AppName;
WndClass.hInstance := hInstance;
RegisterClassEx(WndClass);
hWnd := CreateWindowEx(
0,AppName,AppName,
ws_overlappedwindow ,
300,200,155,120,0,0,hInstance,Nil);
hdc:=getDC(hWnd);
ShowWindow(hWnd,CmdShow);
CreateThread(nil,0,@UP,0,0,id);
while GetMessage(Msg, 0, 0, 0)do ;
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.
← →
AllDer (2004-09-11 22:19) [5]никто незнает?
← →
Polevi © (2004-09-12 19:35) [6]неправильно работаешь, рисовать надо в WM_PAINT, по таймеру InvalidateRect
← →
AllDer (2004-09-18 14:52) [7]а кто сделать может?
чтоб готовый код был,SetTimer не применять
для подробностей пишите (а то это commerce уже wmr_wmz)
marinazolotay@mail.ru
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.035 c