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

Вниз

SetDCPenColor   Найти похожие ветки 

 
Goblinus   (2002-11-30 02:40) [0]

Доброго всем времени суток!

Есть такой кусок кода (чистый WinAPI):

...
var
VisCaret: Boolean = False;
XCaret: Integer = 1;
Ycaret: Integer = 1;
...

function WindowProc...
var
DC:HDC
Cl: Longint;
...
case M of
...
WM_Timer: if wParam = 1 then begin
VisCaret := not VisCaret;
if VisCaret = True then CL := 0
else cl := .../цвет clBtnFace - как его получить?
SetDCPenColor(CL); //subj
MoveToEx(DC, XCaret, YCaret, nil);
LineTo(DC, XCaret, YCaret + 16);
end;
...


Короче, создаётся курсор на экране.
Только вот subj не работает почему-то, курсор не мигает, остаётся черным. что делать? C таймером всё в порядке
Помогите, плиз.


 
MBo   (2002-11-30 14:57) [1]

1) Хоть это и кажется невероятным, cl:=clBtnFace;

2) не вижу SelectObject !!!!

3) программа с использованием DC_PEN будет работать не на всех операционках.


 
Morfein   (2002-11-30 21:38) [2]

Всё просто... он и не будет мигать!
Ты ж только одну фазу курсора рисуешь...
Вот и получается, что по таймеру у тебя каждые сколько-то сек. рисуется одна и та же чёрточка...


 
Goblinus   (2002-12-02 01:23) [3]


> MBo ©


Спасибо :)


> Morfein ©

Не понял, что ты имел ввиду. Но уже неважно, все работает...

Только теперь другая трабла...

WM_CHAR: begin
TextOut(DC, XCaret, YCaret, PChar(wParam), 1); //Выдается
//Run-time error 216. суть в том, чтобы вывести символ на
//форму
...
end;


 
MBo   (2002-12-02 13:11) [4]

PChar(wParam)
так нельзя
wParam сообщения wm_char содержит не указатель на строку, а непосредственно символ. Создай временную строку pchar или string, запиши в нее этот символ, потом уже передавай в textout


 
Goblinus   (2002-12-03 01:39) [5]

Не получается чего-то:

...
var
DC: HDC;
cl, clWhite: LongInt;
S: PChar;
TextExtent: TSize;
TextWidth: Integer;
...

WM_Char: begin
KillTimer(Wnd, 1);
PaintCaret(DC, clWhite);
S := PChar(wParam);
GetTextExtentPoint32(DC, S, 1, TextExtent);
TextWidth := TextExtent.cx;
TextOut(DC, XCaret, YCaret, S, 1);
Inc(XCaret, TextWidth);
PaintCaret(DC, 0);
end;

...


 
MBo   (2002-12-03 06:27) [6]

Ты не понял - wParam НЕ ЯВЛЯЕТСЯ адресом строки, и приведение его к PChar бессмысленно - получаешь указатель на один из младших адресов памяти. Сделай, например, так:

c:Char;

c:=Chr(wparam);
TextOut(dc,x,y,@c,1);




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

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

Наверх




Память: 0.45 MB
Время: 0.013 c
7-62871
Kotka
2002-11-07 00:59
2003.01.20
Слежение за слежением!!!


1-62622
Scorpi
2003-01-09 07:26
2003.01.20
Кнопки в циклах


1-62638
Sergey-ZZZ
2003-01-09 15:53
2003.01.20
NumLock


14-62755
Dron_coder
2002-12-29 17:41
2003.01.20
Всем, всем, всем!!!


14-62737
ZiLot
2003-01-04 12:14
2003.01.20
Проблема с кавычками





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский