имеется окошко (наследник cwnd) в котором отрисовываются несколько кнопок. само окошко лежит на диалоге в виде custom control'а.
вопрос номер раз: как правильно создавать кнопки? в текущем варианте они создаются примерно таким кодом:
class CОкошко : public CWnd
{
protected:
void PreSubclassWindow( void );
CButton prevButton;
CButton nextButton;
...
}
void CОкошко::PreSubclassWindow()
{
CWnd::PreSubclassWindow();
GetClientRect( &clientRect );
CRect bRect = clientRect;
DWORD style = WS_CHILD | WS_VISIBLE | WS_TABSTOP;
bRect.right = bRect.left + prevWidth;
prevButton.Create( _T( "Prev" ), style, bRect, this, IDC_PREV );
bRect.left = bRect.right;
bRect.right = bRect.left + nextWidth;
nextButton.Create( _T( "Next" ), style, bRect, this, IDC_NEXT );
...
}
это работает но не совсем здорово. при попытке создать второй экземпляр окошка мы весело рушимся при попытке зарегистрировать контрол с номером IDC_PREV во второй раз. допустим, номера можно сгенерировать в ран-тайм, но как тогда быть с MESSAGE_MAP?
вопрос номер два: в том единственном экземпляре, который удается создать, кнопки выглядят совершенно невменяемым образом: шрифт надписи на пару пунктов крупнее того, что на диалоге (там стандартный системный) и почему-то болд. мало того при нажатии на кнопку вокруг нее появляется рамка активной кнопки (черненькая такая) и больше не исчезает. тобиш раз прокликал по всем кнопкам и они все выглядят активными. где грабли?