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. |