Доброго дня!
Что то нифига не врублюсь - как мне обработать нажатие на кнопку.
Есть класс CMainWnd, который представляет главное окно приложения. В окне находится диалог IDD_TOOL_JPEG, на котором расположены кнопки, переключатели и т.д.
| Код |
///---------------------------------------------------------------------------- ///@brief /// Main window of the application /// ///// class CMainWnd : public CFrameWnd { //Construction/destruction public: CMainWnd( ); ~CMainWnd( );
//Message handlers public: //overrided methods from CWnd class BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult); int OnCreate( LPCREATESTRUCT lpCreateStruct );
//Members private: CDialog *m_pToolsDialog; DECLARE_MESSAGE_MAP( ); };
|
Реализация:
| Код |
//Message map BEGIN_MESSAGE_MAP( CMainWnd, CFrameWnd ) ON_WM_CREATE( ) ON_WM_PAINT( ) END_MESSAGE_MAP( )
///---------------------------------------------------------------------------- ///@brief /// Constructor /// ///// CMainWnd::CMainWnd( ) { //Init members { m_pToolsDialog = NULL; }
//Create this window, using parent - method CFrameWnd::Create( NULL, _T("Demo Application"), WS_OVERLAPPEDWINDOW, CFrameWnd::rectDefault, NULL, NULL ); }
///---------------------------------------------------------------------------- ///@brief /// Destructor /// ///// CMainWnd::~CMainWnd( ) { SAFE_DELETE( m_pToolsDialog ); }
///---------------------------------------------------------------------------- ///@brief /// This method will be called, if window will be created /// ///// int CMainWnd::OnCreate( LPCREATESTRUCT lpCreateStruct ) { //Init Tool dialog { m_pToolsDialog = new CDialog( ); int result = m_pToolsDialog->Create(IDD_TOOL_JPEG, this ); if ( result == TRUE ) { m_pToolsDialog->ShowWindow( SW_SHOW ); } }
//No errors return FALSE; }
BOOL CMainWnd::OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult ) { CWnd::OnNotify( wParam, lParam, pResult );
//which control sends the message switch( wParam ) { case IDC_BUTTON_OPEN: if ( BN_CLICKED == lParam ) { this->MessageBox( _T("lkjlsdkjf") ); } }
return FALSE; }
|
При нажатии на кнопку, даже не вызывается метод CMainWnd::OnNotify . . . Пробовал также использовать метод OnCommand, тоже дохлый номер. Также пробовал создавать свой класс, производный от CDialog, та же история. . .
Пробовал также добавлять в карту сообщений вот это:
| Код | ON_BN_CLICKED( IDC_BUTTON_OPEN, myOnButtonClick )
|
. . . и тоже, как об стенку горох - метод myOnButtonClick() не вызывается.
Можно примерчик, а то уже запарился
|