создание cbutton'а вручную
От: pan One  
Дата: 19.02.03 22:36
Оценка:
имеется окошко (наследник 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?

вопрос номер два: в том единственном экземпляре, который удается создать, кнопки выглядят совершенно невменяемым образом: шрифт надписи на пару пунктов крупнее того, что на диалоге (там стандартный системный) и почему-то болд. мало того при нажатии на кнопку вокруг нее появляется рамка активной кнопки (черненькая такая) и больше не исчезает. тобиш раз прокликал по всем кнопкам и они все выглядят активными. где грабли?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.