Проблемы с окном
1)обязательно ли каждый раз при обработке WM_Paint получать DC?Нельзя ли это сделать 1 раз сразу после создания окна?
2)Как сделать тексту прозрачный фон?
3)Как сменить шрифт(на Tahoma,например)?
4)Зачем надо WS_Ex_AppWindow и надо ли оно в моём случае?
5)Всегда ли LoadCursor,0,IDC_AppStarting возвращает одинаковое значение(т.е. его можно загнать в инициализацию uWCE и сэкономить несколько байт:))?
6)Обязательно ли получать hInstance и передавать его?Ведь LoadCursor прекрасно обходится без неё
7)Обязательно ли вызывать UpdateWindow?Или только она вызывает WM_Paint?
Просьба все ответы представлять на Ассемблере.Засим всё,жду ответов:rolleyes:
--------
Поступило обновление
1)обязательно ли каждый раз при обработке WM_Paint получать DC?Нельзя ли это сделать 1 раз сразу после создания окна?
2)Как сделать тексту прозрачный фон?
3)Как сменить шрифт(на Tahoma,например)?
4)Зачем надо WS_Ex_AppWindow и надо ли оно в моём случае?
5)Всегда ли LoadCursor,0,IDC_AppStarting возвращает одинаковое значение(т.е. его можно загнать в инициализацию uWCE и сэкономить несколько байт:))?
6)Обязательно ли получать hInstance и передавать его?Ведь LoadCursor прекрасно обходится без неё
7)Обязательно ли вызывать UpdateWindow?Или только она вызывает WM_Paint?
Просьба все ответы представлять на Ассемблере.Засим всё,жду ответов:rolleyes:
1) Да обязательно.. Контексты в системе не бесконечные и поэтому приложение должно их освобождать когда они не востребованны
2) MSDN.. Google.. Yandex.. неужели их уже нет!?
SetBkMode(hMemDC, TRANSPARENT);
SetTextColor(hMemDC, RGB(255, 0, 255));
DrawText(hMemDC, ...);
3) Юзаем CreateFont, затем SelectObject(hMemDC, hNewFont);
4) WS_EX_APPWINDOW - кнопка на панели задач будет :)
5) Нет
6) Совместимость с 9x вроде..
7) InvalidateRect, вообще смотря для чего..
8) Может тебе сразу скомпиленный exe выслать? Потом дизасемблернешь его и все..
True :)
Сохранять контекст (кисти, шрифты..), на мой взгляд, имеет смысл только тогда, когда необходима быстрая перерисовка содержимого окна.. т.к. не будет тратиться лишнее микровремя :) на их инициализацию. В случае с OWNDC экономия еще будет в том что не нужно будет заново устанавливать для контекста все параметры (шрифт, цвет ...), т.к. в обычном случае GetDC возвращает контекст с дефолтными установками :) Поправьте если не прав (:
2)Я так и знал,что надо использовать SetBkMode:)
3)И что у CreateFont за весёлые параметры в виде 1-2 букв?
4)В смысле-кнопка на панели?Как в VB свойство окна ShowInTaskBar?
7)Чтобы исполнилось первое событие WM_Paint,вот для чего?Или сразу после CreateWindow всё заработает?У меня ведь там WS_Visible
8)Чем?Да и неудобно всё это...
Еще как вызывает..
Причем последний параметр указывает на то нужно ли стирать (читай заливать белым :)) содержимое окна, перед тек как вызывать прорисовку.
2)Я так и знал,что надо использовать SetBkMode:)
3)И что у CreateFont за весёлые параметры в виде 1-2 букв?
4)В смысле-кнопка на панели?Как в VB свойство окна ShowInTaskBar?
7)Чтобы исполнилось первое событие WM_Paint,вот для чего?Или сразу после CreateWindow всё заработает?У меня ведь там WS_Visible
8)Чем?Да и неудобно всё это...
3) А что не понятно?
HFONT CreateFont(
int nHeight, // height of font
int nWidth, // average character width
int nEscapement, // angle of escapement
int nOrientation, // base-line orientation angle
int fnWeight, // font weight
DWORD fdwItalic, // italic attribute option
DWORD fdwUnderline, // underline attribute option
DWORD fdwStrikeOut, // strikeout attribute option
DWORD fdwCharSet, // character set identifier
DWORD fdwOutputPrecision, // output precision
DWORD fdwClipPrecision, // clipping precision
DWORD fdwQuality, // output quality
DWORD fdwPitchAndFamily, // pitch and family
LPCTSTR lpszFace // typeface name
);
Паpаметpы
nHeight: Высота шpифта (в логических единицах)
nWidth: Шиpина шpифта (в логических единицах)
nEscapement: Угол (наклона) стpоки (в десятых долях гpадуса)
nOrientation: Угол наклона оси символов (в десятых долях гpадуса)
fnWeight: Толщина шрифта :) норм, жирный и тд..
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900
fdwItalic: Куpсив?
fdwUnderline: Подчеpкнутый?
fdwStrikeOut: Перечеркнутый?
fdwCharSet: Одна из констант
ANSI_CHARSET
BALTIC_CHARSET
CHINESEBIG5_CHARSET
DEFAULT_CHARSET
EASTEUROPE_CHARSET
GB2312_CHARSET
GREEK_CHARSET
HANGUL_CHARSET
MAC_CHARSET
OEM_CHARSET
RUSSIAN_CHARSET
SHIFTJIS_CHARSET
SYMBOL_CHARSET
TURKISH_CHARSET
VIETNAMESE_CHARSET
fdwQuality: Качество прорисовки шрифта
fdwPitchAndFamily: Название шpифта
Пример
4) С VB не знаком, но по названию свойства - да :)
7) И так все заработает :) Нужно для того чтоб в ручную вызывать перерисовку окна
8) Я пошутил (: