Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Почему не раболтает


Автор: Nastya 11.5.2002, 08:17
Люди, товарищи, человеки!
Обясните почему не работает вот этот код

hDC=GetDC(hWnd);
SetTextColor(hDC,255);
SetBkColor(hDC,0);
ReleaseDC(hWnd,hDC);
Ошибок компелятор не выдал

Причем смена шрифта, пера и кисти тоже не сработала.
Похоже я где-то сдорово проглючила

Помещала кусок уже и в WM_PAINT и WM_SHOW и непосредственно перед рисованием и "показом окна" ничего.
:(

Автор: Alex101 11.5.2002, 13:51
Цитата(Nastya @ 11.5.2002, 09:17)
Причем смена шрифта, пера и кисти тоже не сработала.
Похоже я где-то сдорово проглючила

Помещала кусок уже и в WM_PAINT и WM_SHOW и непосредственно перед рисованием и "показом окна" ничего.
:(

hwnd чего?
Скорее всего у этого окна системный шрифт...

Автор: Sheff 11.5.2002, 14:19
Попробуй GetWindowDC

Автор: suborg 12.5.2002, 20:20
а разве после release в dc не восстанавливаются параметры по умолчанию?
стили линий, шрифты... по-моему когда заново GetDC делаешь, всё приходится по новой устанавливать

Автор: Nastya 13.5.2002, 08:01
Цитата
hwnd чего?


Окна которое создает сама программа, основного окна программы.

Цитата
а разве после release в dc не восстанавливаются параметры по умолчанию?


Даже если вывод текста и установка атребутов проходит до release, но например при обработки сообщения WM_TIMER ничего не получаетс.

Только в WM_PAINT причем если текст выводится в процедуре вызываемой из него тоже нечего не выходит.

Возращается ошибка 87 - неправельные параметры.

Автор: Nastya 13.5.2002, 08:04
GetWindowDc - тоже не срабатывает

Автор: Grey 13.5.2002, 09:35
Возможно здесь с цветом проблема
SetTextColor(hDC,255);

Попробуй
SetTextColor(hDC,RGB(0,0,255));

Автор: Fantasist 13.5.2002, 17:40
Проверь все-таки hWnd. Он у тебя точно тот, что нужен? А то иногда люди берут hWnd frame'a а не клиентскои области. Про ReleaseDC  не уверен на месте ли он.

Автор: Sheff 13.5.2002, 17:50
Вот этот код:
Код

CWnd *wnd=FindWindow(NULL,TEXT("[Заголовок окна]"));
wnd->GetDC()->SetTextColor(RGB(255,0,0));
wnd->GetDC()->TextOut(0,0,"Test");

Вроде работает, проверял.

Автор: fox 21.5.2002, 14:31
Не знаю что случилось, но я уже писал ответ на этот вопрос (куда он исчез???)
При получении сообщения WM_PAINT нужно вызывать функции BeginPaint и EndPaint  а в MFC в OnPaint() CPaintDC dc(this);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)