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

Вниз

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 вся ветка

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

Наверх





Память: 0.45 MB
Время: 0.011 c
4-62895
Cosmic
2002-12-02 22:12
2003.01.20
Диалог


1-62644
123000
2003-01-09 16:33
2003.01.20
Try ... Except


1-62577
Ya Vasya
2003-01-07 20:04
2003.01.20
FreeReport


3-62418
Mamay
2002-12-22 18:57
2003.01.20
MIDAS - клиенты не видят обновлений друг друга


1-62523
Kventin
2003-01-10 18:55
2003.01.20
MS Word & html





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