Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

HDC, использование в OnPaint   Найти похожие ветки 

 
panov ©   (2004-06-02 13:35) [0]

На главной форме лежит TPaintBox (имя pb),
определена функция и глобальная переменная(для теста)

var
 tDC: HDC;


в OnCreate формы:

 tDC := pb.Canvas.Handle;

в pb.OnPaint написано:

Upd(tUpd);


procedure Upd(aDC: HDC);
begin
 TextOut(aDC,10,10,"1234567890",10);
end;


Таким способом не происходит отрисовка(или происходит неправильно).

При вызове в OnPaint Upd(pb.canvas.Handle) отрисовка идет нормально.

Что за особенность?

При просмотре в отладчике tDC равно pb.Canvas.Handle.


 
panov ©   (2004-06-02 13:37) [1]

Сорри, вместо

в pb.OnPaint написано:

Upd(tUpd);


читать
в pb.OnPaint написано:

Upd(tDC);


 
MBo ©   (2004-06-02 13:52) [2]

>При просмотре в отладчике tDC равно pb.Canvas.Handle.
А у меня - не равно

procedure TForm1.FormCreate(Sender: TObject);
begin
 dc:=pb.Canvas.Handle;
end;

procedure TForm1.pbPaint(Sender: TObject);
begin
Caption:=format("%d %d",[dc,pb.Canvas.Handle]);
...


 
serge ©   (2004-06-02 14:02) [3]

При каждой отрисовке TPaintBox - Canvas.Handle получает разные значения. :(


 
serge ©   (2004-06-02 14:02) [4]

Удалено модератором
Примечание: Дубль


 
serge ©   (2004-06-02 14:03) [5]

Удалено модератором
Примечание: Дубль


 
Clickmaker ©   (2004-06-02 14:06) [6]

Разгадка в функции TControlCanvas.CreateHandle


 
serge ©   (2004-06-02 14:06) [7]

сорри за повтор


 
inic ©   (2004-06-02 14:07) [8]

> ClickMaker
А также TGraphicControl.WMPaint


 
panov ©   (2004-06-02 14:21) [9]

Спасибо, действительно так - TPaintBox не имеет постоянного HDC

Похоже, что  надо каждый раз в OnPaint передавать DC, либо получать его от формы, на которой находится TPaintBox вычислять ClientRect для него...


 
MBo ©   (2004-06-02 14:24) [10]

>Похоже, что  надо каждый раз в OnPaint передавать DC, либо получать его от формы, на которой находится TPaintBox вычислять ClientRect для него...

А для чего?
Вот в OnPaint и получать этот DC - чем плохо?


 
panov ©   (2004-06-02 14:29) [11]

>MBo ©   (02.06.04 14:24) [10]

Придется передавать в OnPaint либо передавать сам TPaintBox конструктору в классе.

У меня реализован класс, в котором формируется объект для отображения на канве. При создании в него передается DC.
В некоторых методах класса могут рассчитываться позиции на канве.

А раз такая ситуация с DC в PaintBox, то мне просто придется в конструктор класса передавать TPaintBox, а не DC, хотя класс и становится зависимым от используемого компонента или объекта для отображение.


 
Игорь Шевченко ©   (2004-06-02 14:43) [12]

PaintBox - это кусок формы. DC один для клиентской части формы. Из этого и надо исходить



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

Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.032 c
1-1088086666
FX
2004-06-24 18:17
2004.07.11
Preview


11-1075118001
savva
2004-01-26 14:53
2004.07.11
с появлением GlueCut я че то не пойму как мне новую версию KOL...


4-1086006441
GanibalLector
2004-05-31 16:27
2004.07.11
Hook на wm_settext ???


1-1088119523
ZiRoCool
2004-06-25 03:25
2004.07.11
INI-Файлы


3-1087289384
serg128
2004-06-15 12:49
2004.07.11
Как установить фильтр в TClientDataSet чтобы остались записи из 1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский