SHAppBarMessage 작업표시줄 정보 및 작업영역 구하기
SHAppBarMessage 함수
http://msdn.microsoft.com/en-us/library/bb762108(VS-85).aspx
How to find the edge of a task bar
http://support.microsoft.com/kb/179908/en-us
MinitorFromRect 함수
http://msdn.microsoft..com/en-us/library/dd145063(VS.85).aspx
GetMonitorInfo 함수
http://msdn.microsoft..com/en-us/library/dd144901(VS.85).aspx
1. 먼저 작업표시줄의 위치와 영역을 알아야.
SHAppBarMessage()함수 이용(파라메터: ABE_GETTASKBARPOS)
2. 작업표시줄 영역을 통해 모니터를 구한다.
MonitorFromRect() 함수
3. 모니터의 작업영역을 구한다.
GetMonitorInfo()함수
// shellapi.h (uEdge 값의 위치)
// #define ABE_LEFT 0
// #define ABE_TOP 1
// #define ABE_RIGHT 2
// #define ABE_BOTTOM 3
APPBARDATA abd;
abd.cbSize = sizeof(APPBARDATA);
abd.hWnd = GetSafeHwnd();
SHAppBarMessage(ABM_GETTASKBARPOS, &abd);
// taskbar 위치
UINT nTaskBarPos = abd.uEdge;
// taskbar 가 위치한 모니터의 핸들 얻어옴
HMONITOR hMonitor = MonitorFromRect(&(abd.rc), MONITOR_DEFAULTTOPPRIMARY);
// 모니터의 정보 (Working area)
MONITORINFO monitorinfo;
monitorinfo.cbSize = sizeof(MONITORINFO);
GetMonitorInfo(hMonitor, &monitorinfo);
// desktop working area
CRect rcDesktop = monitorInfo.rcWork;
반응형
'IT-개발,DB' 카테고리의 다른 글
[개발/인터넷] HTTP 상태 코드(HTTP Status codes) (0) | 2012.01.19 |
---|---|
[개발/웹] Post, Get 데이터 보내기 유의사항 (0) | 2012.01.13 |
[개발/MFC] 스트링 형변환 (0) | 2012.01.07 |
[개발/MFC] error LNK2005: --- .obj에 이미 정의되어 있습니다. 오류 (0) | 2012.01.05 |
[개발/C++] 형 변환 char* to string or string to char* (0) | 2012.01.03 |
댓글