HOWTO: Find the Edge of a Task BarLast reviewed: January 29, 1998Article ID: Q179908 |
The information in this article applies to:
SUMMARYWhen you use the SHAppBarMessage() function to retrieve information about a task bar, you do not receive a message that indicates where the AppBar position is relative to the edges of the screen. You use ABE_LEFT, ABE_RIGHT, ABE_TOP, and ABE_BOTTOM to create the task bar, but you do not get a message call that returns the edge position after the task bar is created. This article shows how to find the edge of a task bar.
MORE INFORMATIONThe following function called GetEdge() uses the message ABM_GETTASKBARPOS to get the bounding rectangle coordinates to determine where the task bar appears.
Sample Code
void CMainFrame::OnGetTaskbarPos() // Message handler.
{
// Get a pointer to the Windows task manager.
CWnd *pwnd = FindWindow("Shell_TrayWnd", NULL);
if (pwnd != NULL)
{
APPBARDATA abd;
abd.cbSize = sizeof(APPBARDATA);
abd.hWnd = phwnd->m_hWnd;
SHAppBarMessage(ABM_GETTASKBARPOS, &abd);
UINT uEdge = GetEdge(abd.rc);
switch(uEdge)
{
case ABE_LEFT:
break;
case ABE_RIGHT:
break;
case ABE_TOP:
break;
case ABE_BOTTOM:
break;
default:
AfxMessageBox("abd.uEdge not found");
return;
}
}
}
UINT CMainFrame::GetEdge(CRect rc)
{
UINT uEdge = -1;
if (rc.top == rc.left && rc.bottom > rc.right)
{
uEdge = ABE_LEFT;
}
else if (rc.top == rc.left && rc.bottom < rc.right)
{
uEdge = ABE_TOP;
}
else if (rc.top > rc.left )
{
uEdge = ABE_BOTTOM;
}
else
{
uEdge = ABE_RIGHT;
}
return uEdge;
}
Keywords : UsrShell kbcode Version : WINNT Platform : winnt Issue type : kbhowto |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |