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