|
|
|
|
Forum
Please
Log In
to post a new message or reply to an existing one. If you are not registered, please
register.
NOTE: Some forums may be read-only if you are not currently subscribed to
our technical support services.
Subject |
Author |
Date |
|
Julien Garcia
|
Mar 2, 2011 - 6:10 AM
|
Hello, I am using CExtTabWnd & CExtTabPageContainerWnd to display tabs. I can handle click on a tab item by overriding "OnTabWndClickedItem" function. I can handle click on "Close" and "Help buttons on the tab area of the page container by overriding OnTabWndClickedButton. But I can’t find how to handle click (more precisely a right click) on a tab item in the tab list. What I want is to display a popup menu when right clicking a tab item in this list (the same popup menu that I display when I right click the tab item with "OnTabWndClickedItem" function. For example (see screenshot below), how can I handle a right click on the "TreeCtrl" item. Thank you in advance for any help
|
|
Technical Support
|
Mar 4, 2011 - 10:29 AM
|
You should handle the CExtPopupBaseWnd::g_nMsgTranslateMouseClickEvent registered message in your tab window class:
ON_REGISTERED_MESSAGE(
CExtPopupBaseWnd::g_nMsgTranslateMouseClickEvent,
OnMsgTranslateMouseClickEvent
)
LRESULT CYourTabWnd::OnMsgTranslateMouseClickEvent(WPARAM wParam, LPARAM lParam)
{
ASSERT_VALID( this ); wParam; lParam;
#ifdef _DEBUG
CExtPopupBaseWnd::TranslateMouseClickEventData_t * pData = (CExtPopupBaseWnd::TranslateMouseClickEventData_t*)wParam;
ASSERT( pData != NULL );
if( pData->m_nFlags == WM_LBUTTONDOWN )
afxDump << "WM_LBUTTONDOWN\r\n";
else
if( pData->m_nFlags == WM_MBUTTONDOWN )
afxDump << "WM_MBUTTONDOWN\r\n";
else
if( pData->m_nFlags == WM_RBUTTONDOWN )
afxDump << "WM_RBUTTONDOWN\r\n";
#endif // _DEBUG
return 0L;
}
|
|
Julien Garcia
|
Mar 7, 2011 - 6:21 AM
|
Hello, Indeed, overriding "OnMsgTranslateMouseClickEvent" in my tab window class allows me to catch right click events in the vertical list of tabs. Now, can I know which tab item has been clicked (by getting its index for example)? I saw the attribute m_point in the pData pointer, but I can’t figure how to get the index info (except dividing m_point.y by the height in pixels of a popup menu item ?). Thank you in advance for any help
|
|
Technical Support
|
Mar 10, 2011 - 11:06 AM
|
Menu items have an order of tab items. Menu item identifiers are computed as 0xffff plus tab item index. The CExtPopupMenuWnd::_HitTest() method allows you to hit test menu items. Please note menu items with zero command identifiers are separators.
|
|
Julien Garcia
|
Mar 3, 2011 - 9:03 AM
|
Hello, Thank you, but handling "ON_WM_RBUTTONDOWN" in my CExtTabWnd derivated class does not seem to work. I do not enter in the function "OnRButtonDown((UINT nFlags, CPoint point)" when right clicking a tab item from the right vertical list of tabs (see screenshot below). This work only when i right click a tab item in the horizontal list. I’m using version 2.64 of Prof-UIS. Thank you in advance for any help
|
|
Technical Support
|
Mar 3, 2011 - 7:58 AM
|
You should handle the WM_RBUTTONDOWN message in the tab window and perform tab item hit testing using the CExtTabWnd::ItemHitTest() method.
|
|