Re: создание cbutton'а вручную
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 20.02.03 05:22
Оценка:
Здравствуйте, 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()? Или это уже опробовано и не работает?
- Искренне ваш, Поросенок Пафнутий
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.