Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.065 c
14-1096648446
Abuzer
2004-10-01 20:34
2004.10.24
FreeReport


4-1095743160
Rem
2004-09-21 09:06
2004.10.24
Текст на панельки


4-1095455747
НовичОк
2004-09-18 01:15
2004.10.24
Иконки на рабочем столе


3-1096045834
Muchacho
2004-09-24 21:10
2004.10.24
проблема обновления


6-1092730970
Дмитрий(Оренбург)
2004-08-17 12:22
2004.10.24
NSMTP