Re: can not create a button inside a child view of a frame

"domehead100" <[email protected]>
Newsgroups gmane.comp.windows.wtl
Message-ID <[email protected]>
What if you add a BS_PUSHBUTTON style to the dwStyle parameter?

~Mike

--- In [email protected], "Florin" <florinl_ro@...> wrote:
>
> Hello,
> 
> I need your help in order to figure out why I am not able to create a button control at runetime within a client view area.
> 
> The main classes are listed below (the code that does not work resides in method OnCreate of the class CTest_wtlView):
> 
> // the client view
> 
> class CTest_wtlView : 
>     public CScrollWindowImpl<CTest_wtlView, CWindow, CWinTraits<WS_OVERLAPPEDWINDOW | WS_VISIBLE> >
> {
> public:
>     DECLARE_WND_CLASS_EX(GetWndClassName(),
>         CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS, COLOR_3DFACE)
> 
>     static LPCTSTR GetWndClassName() { return _T("CTest_wtlView"); }
> 
>     BOOL PreTranslateMessage(MSG* /*pMsg*/)
>     {
>         return FALSE;
>     }
> 
>     BEGIN_MSG_MAP(CTest_wtlView)
>         MESSAGE_HANDLER(WM_CREATE, OnCreate)
>     END_MSG_MAP()
> 
>     LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
>     {
>         RECT btnRc = {10, 10, 100, 35};
>         m_btn.Create(m_hWnd, &btnRc, _T("Hello"), WS_CHILD | WS_VISIBLE);
>         ATLASSERT(m_btn.IsWindow());
> 
>         return 0;
>     }
> 
>     void DoPaint(CDCHandle)
>     {
>     }
> 
> private:
>     WTL::CButton m_btn;
> };
> 
> // the frame (only the important code is listed)
> class CMainFrame : 
> public CFrameWindowImpl<CMainFrame>, 
> public CUpdateUI<CMainFrame>,
> public CMessageFilter, public CIdleHandler
> {
> public:
> 	DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)
> 
> 	CTest_wtlView m_view;
> 
> 	CCommandBarCtrl m_CmdBar;
> 
> 	virtual BOOL PreTranslateMessage(MSG* pMsg)
> 	{
> 		if(CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg))
> 			return TRUE;
> 
> 		return m_view.PreTranslateMessage(pMsg);
> 	}
> 
>   // ... skiping messages map
> 
>     // CFrameWindowImplBase::UpdateLayout override for CCS_TOP status bar
> 	void UpdateLayout(BOOL bResizeBars = TRUE)
>     {
>         if (m_view.IsWindow()) {
>             RECT wndRc;
>             GetClientRect(&wndRc);
> 
>             m_view.SetWindowPos(NULL, &wndRc, SWP_NOZORDER | SWP_NOACTIVATE);
>         }
>     }
> 
> 	LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
> 	{
> 		// create command bar window
> 		HWND hWndCmdBar = m_CmdBar.Create(m_hWnd, rcDefault, NULL, ATL_SIMPLE_CMDBAR_PANE_STYLE);
> 		// attach menu
> 		m_CmdBar.AttachMenu(GetMenu());
> 		// load command bar images
> 		m_CmdBar.LoadImages(IDR_MAINFRAME);
> 		// remove old menu
> 		SetMenu(NULL);
> 
> 		HWND hWndToolBar = CreateSimpleToolBarCtrl(m_hWnd, IDR_MAINFRAME, FALSE, ATL_SIMPLE_TOOLBAR_PANE_STYLE);
> 
> 		CreateSimpleReBar(ATL_SIMPLE_REBAR_NOBORDER_STYLE);
> 		AddSimpleReBarBand(hWndCmdBar);
> 		AddSimpleReBarBand(hWndToolBar, NULL, TRUE);
> 
> 		CreateSimpleStatusBar();
> 
> 		m_hWndClient = m_view.Create(m_hWnd, rcDefault, 0, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
> 
> 		UIAddToolBar(hWndToolBar);
> 		UISetCheck(ID_VIEW_TOOLBAR, 1);
> 		UISetCheck(ID_VIEW_STATUS_BAR, 1);
> 
> 		// register object for message filtering and idle updates
> 		CMessageLoop* pLoop = _Module.GetMessageLoop();
> 		ATLASSERT(pLoop != NULL);
> 		pLoop->AddMessageFilter(this);
> 		pLoop->AddIdleHandler(this);
> 
> 		return 0;
> 	}
> 
>   // ...
> }
> 
> Thanks for your support,
> Florin
>




------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/wtl/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/wtl/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[email protected] 
    mailto:[email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.