How to add a pop-up menu to the MDIChildWnd's title bar
Srinivas Vanga -- srini@concentra.com Friday, September 06, 1996 Environment : VC++ 4.2, Win 95 Hi there, I want to add a pop-up menu (on the R-click) to the Document frame window's (MDIChildWnd) Title bar area. my problem here is catching the event. I've tried to add R-click handler on the client frame window class (derived class from CMDIChildWnd). Apparently, this handler is not getting called no matter where you click on the frame. Any clues.... Thanks in advance srinivas vanga Concentra Corporation srini@concentra.com (617) 229-4684
CraigTT@ccmail01.PE-Nelson.COM Saturday, September 07, 1996 [Mini-digest: 3 responses] If you're clicking in the title bar, are you trying to get the WM_NCRBUTTONDOWN message? This is a nonclient area of the window. Tim Craig ______________________________ Reply Separator _________________________________ Subject: How to add a pop-up menu to the MDIChildWnd's title bar Author: mfc-l@netcom.com at SMTPLINK-PEN Date: 9/7/96 4:35 AM Received: by ccmail from lax.PE-Nelson.COM >From owner-mfc-l@majordomo.netcom.com X-Envelope-From: owner-mfc-l@majordomo.netcom.com Received: from majordomo.netcom.com (listless.netcom.com) by lax.PE-Nelson.COM (5.65c/IDA/PE-Nelson) id AA03763; Sat, 7 Sep 1996 04:32:53 -0700 Received: by majordomo.netcom.com (8.7.5/8.7.3/(NETCOM MLS v1.01)) id WAA07964; Fri, 6 Sep 1996 22:53:26 -0700 (PDT) Date: Fri, 6 Sep 1996 12:31:52 -0500 Message-Id: <9609061731.AA30180@wyndham.concentra.com> From: Srinivas VangaTo: mfc-l@netcom.com Subject: How to add a pop-up menu to the MDIChildWnd's title bar Sender: owner-mfc-l@majordomo.netcom.com Errors-To: owner-mfc-l@majordomo.netcom.com Precedence: bulk Reply-To: mfc-l@netcom.com Environment : VC++ 4.2, Win 95 Hi there, I want to add a pop-up menu (on the R-click) to the Document frame window's (MDIChildWnd) Title bar area. my problem here is catching the event. I've tried to add R-click handler on the client frame window class (derived class from CMDIChildWnd). Apparently, this handler is not getting called no matter where you click on the frame. Any clues.... Thanks in advance srinivas vanga Concentra Corporation srini@concentra.com (617) 229-4684 -----From: Jim Leavitt Srinivas: 1) Use class wizard to expand your message filter to "window" 2) Handle the WM_NCRBUTTONDOWN message. 3) Check for nHitTest == HTCAPTION sample... void CChildFrame::OnNcRButtonDown(UINT nHitTest, CPoint point) { // TODO: Add your message handler code here and/or call default if (nHitTest == HTCAPTION) AfxMessageBox("Pop up Menu Now"); // if you want to call the base class... CMDIChildWnd::OnNcRButtonDown(nHitTest, point); } Looks like a good idea for my app too. Jim Leavitt jimll@halcyon.com -----From: Mike Blaszczak According to the documentation, the caption is a part of the non client area of your window. (I don't know what you mean by a "click handler", since there no "clicked" messages in Windows: there's just double-clicked messages. So, I'll assume you meant WM_RBUTTONDOWN.) As such, you won't get a WM_RBUTTONDOWN when somebody clicks on the caption. Instead, you'll get a WM_NCRBUTTONDOWN message. Since WM_NC messages aren't that popular, they're not directly supported by ClassWizard. You can add an ON_WM_NCRBUTTONDOWN() handler to your message map, like this: BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd) //{{AFX_MSG_MAP(CChildFrame) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code ! //}}AFX_MSG_MAP ON_WM_NCRBUTTONDOWN() END_MESSAGE_MAP() and then, go and add a handler for it: void CChildFrame::OnNcRButtonDown( UINT nHitTest, CPoint point ) { if (nHitTest == HTCAPTION) TRACE2("Somebody clicked IN THE CAPTION at (%d,%d)\n", point.x, point.y); else TRACE2("Somebody clicked out of the caption at (%d,%d)\n", point.x, point.y); } You'll have to add a declaration for this guy in your hader file, of course: class CChildFrame : public CMDIChildWnd { // ... other stuff ... protected: //{{AFX_MSG(CChildFrame) // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG afx_msg void OnNcRButtonDown( UINT nHitTest, CPoint point ); DECLARE_MESSAGE_MAP() }; but that should do what you wanted. .B ekiM http://www.nwlink.com/~mikeblas/ These words are my own. I do not speak on behalf of Microsoft.
rkumar@mail.cswl.com Tuesday, September 10, 1996 Provide WM_CONTEXTMENU a handler for ur frame windowand add the following code to your CChildFrame::PreTranslateMessage if(pMsg->message == WM_NCRBUTTONDOWN) { CRect rect; GetClientRect(rect); ClientToScreen(rect); CPoint point = rect.TopLeft(); point.Offset(5, 5); OnContextMenu(NULL, point); return TRUE; } The WM_NCRBUTTONDOWN message is posted when the user presses the right mouse button while the cursor is within the nonclient area of a window. ______________________________ Reply Separator _________________________________ Subject: How to add a pop-up menu to the MDIChildWnd's title bar Author: mfc-l@netcom.com at internet Date: 07/09/96 4:53 AM Environment : VC++ 4.2, Win 95 Hi there, I want to add a pop-up menu (on the R-click) to the Document frame window's (MDIChildWnd) Title bar area. my problem here is catching the event. I've tried to add R-click handler on the client frame window class (derived class from CMDIChildWnd). Apparently, this handler is not getting called no matter where you click on the frame. Any clues.... Thanks in advance srinivas vanga Concentra Corporation srini@concentra.com (617) 229-4684
| Вернуться в корень Архива |