Context Menu on Windows95 designed keyboard
Sergey S. Zyablitskiy -- Sergey@Redcom.Ru
Friday, November 01, 1996
Environment: VC++ 4.1, Win 95
I implement context menu like this:
void CClientsView::OnContextMenu(CWnd* pWnd, CPoint point)
{ // make sure window is active
GetParentFrame()->ActivateFrame();
int nItem = GetSelectedItem();
if (nItem != -1)
{ CMenu menu;
if (menu.LoadMenu(ID_POPUP_MENU))
{ CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x,point.y,AfxGetMainWnd());
}
}
}
It works, but when I press "context menu" key on my keyboard, which is
Windows95 designed, menu appears at top left corner of the screen.
How to obtain an information about how menu was activated: by pressing a
key or by clicking right mouse button?
With best wishes, Sergey S. Zyablitskiy.
Mike Blaszczak -- mikeblas@nwlink.com
Sunday, November 03, 1996
[Mini-digest: 3 responses]
At 16:39 11/1/96 +1000, "Sergey S. Zyablitskiy" wrote:
>Environment: VC++ 4.1, Win 95
>I implement context menu like this:
> [...]
>It works, but when I press "context menu" key on my keyboard, which is
>Windows95 designed, menu appears at top left corner of the screen.
>How to obtain an information about how menu was activated: by pressing a
>key or by clicking right mouse button?
If the keyboard key is pressed, the point parameter is (-1, -1).
.B ekiM
http://www.nwlink.com/~mikeblas/
I'm afraid I've become some sort of speed freak.
These words are my own. I do not speak on behalf of Microsoft.
-----From: "Quang Ngo"
Try this:
void CClientsView::OnContextMenu(CWnd* pWnd, CPoint point)
{
if (GetAsyncKeyState(VK_RBUTTON) < 0)
TRACE0("It was activated by the left button\n");
else
TRACE0("It was activated by keyboard (F10)\n");
....
}
_,'| _.-''``-...___..--';)
/_ \'. __..-' , ,--...--''' Quang Ngo
<\ .`--''' ` /' jaguar@gaianet.net
`-';' ; ; ;
__...--'' ___...--_..' .;.'
(,__....----''' (,..--''
-----From: Jim Barry
When the menu key is pressed, the OnContextMenu handler receives (-1, =
-1) in the 'point' argument. I usually just test whether or not the =
point lies within the window's client area.
- Jim
| Вернуться в корень Архива
|