Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Внизwm_char Найти похожие ветки
← →
Creative (2006-05-18 15:20) [0]вопрос очень глупый. вот этот код выводит на экран ASCII коды клавиш. А как сделать, чтобы он выводил собственно буквы?
var
aChar: word;
WM_char:
begin
aChar:= wParam;
case aChar of
97..122:
begin
SetRect(R, 100,150, 400, 180);
invalidateRect(hwnd,nil, false);
end;
end;
end;
WM_PAINT:
begin
DC:= BeginPaint(hwnd, ps);
TextOut(dc, 100, 100, pAnsiChar(Chr(aChar)),length(IntToStr(aChar)));
EndPaint(hwnd, ps);
end;
Причем: сообщение перехватывается нормально, и если в функцию вывода текста на экран подставить просто стринг для примера - он выводится. Но на преобразовании программа затыкается. В чем подвох?
← →
ANB © (2006-05-18 15:24) [1]
> IntToStr
Чего хотел, то и получил.
S := Char(aChar);
TextOut(dc, 100, 100, PChar(S),length(S));
← →
Creative (2006-05-18 15:35) [2]> ANB © (18.05.06 15:24) [1]
> S := Char(aChar);
> TextOut(dc, 100, 100, PChar(S),length(S));
а при таком раскладе программа просто вылетает
← →
ANB © (2006-05-18 15:43) [3]
> Creative (18.05.06 15:35) [2]
Запости весь код и посмотри отладчиком - где вылетает.
← →
ANB © (2006-05-18 15:45) [4]
> SetRect(R, 100,150, 400, 180);
> invalidateRect(hwnd,nil, false);
Зачем генерить рект, если потом ты его нигде не используешь ?
Кстати, WM_PAINT имеет особенность срабатывать не только тогда, когда ты его заинвалидейтишь.
← →
Игорь Шевченко © (2006-05-18 15:46) [5]
> TextOut(dc, 100, 100, pAnsiChar(Chr(aChar)),length(IntToStr(aChar)));
>
>
TextOut(dc, 100, 100, pAnsiChar(Chr(aChar)),SizeOf(Char));
← →
MBo © (2006-05-18 15:49) [6]var
c: array[0..1] of Char;
WM_char:
begin
c[0] :=Chr(wParam);
c[1] :=#0;
...
TextOut(dc, 100, 100, c, 1);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c