본문 바로가기
VisualStudio.C++.C#/코딩팁,함수활용,단편

VC++. 주 모니터 화면 픽셀수.바탕화면 작업영역, 작업표시줄 사이즈 구하기.

by i.got.it 2016. 4. 20.

 


코드.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
    // 주모니터의 가로 세로 픽셀수. 
    int screen_x = GetSystemMetrics(SM_CXSCREEN);
    int screen_y = GetSystemMetrics(SM_CYSCREEN);
 
    // 주모니터의 작업표시줄 제외한 영역 rect
    CRect rect_workarea; 
    ::SystemParametersInfo(SPI_GETWORKAREA, 0, &rect_workarea, 0);
 
    // 작업표시줄 영역 구하기, 윈도우타이틀 Shell_TrayWnd임.
    HWND hWnd_TrayWnd = ::FindWindow(_T("Shell_TrayWnd"), NULL); 
    CRect rect_TrayWnd;
    ::GetWindowRect(hWnd_TrayWnd,&rect_TrayWnd);
 
    // 작업표시줄의 트레이Notify 영역구하기. 윈도우 타이틀 TrayNotifyWnd 임.
    HWND hWnd_TrayNotifyWnd = ::FindWindowEx(hWnd_TrayWnd,NULL,_T("TrayNotifyWnd"), NULL);
    CRect rect_TrayNotifyWnd;
    ::GetWindowRect(hWnd_TrayNotifyWnd, &rect_TrayNotifyWnd);
 
    // 출력하기.
    CString cst_xy;
    cst_xy.Format(_T(" screen_x=%d, screen_y=%d \n workarea_right=%d, workarea_bottom=%d \n TrayWnd_left=%d, TrayWnd_top=%d, TrayWnd_right=%d, TrayWnd_bottom=%d \n TrayNofifyWnd_left=%d, TrayNotifyWnd_top=%d, TrayNofifyWnd_right=%d, TrayNotifyWnd_bottom=%d"), 
                      screen_x, screen_y, rect_workarea.right, rect_workarea.bottom, rect_TrayWnd.left, rect_TrayWnd.top, rect_TrayWnd.right, rect_TrayWnd.bottom, rect_TrayNotifyWnd.left, rect_TrayNotifyWnd.top, rect_TrayNotifyWnd.right,rect_TrayNotifyWnd.bottom);
 
    AfxMessageBox(cst_xy);
 



Shell_TrayWnd  : 아래 노랑색 부분(시작 메뉴있는 왼쪽끝까지) , TrayNotifyWnd : 아래 파랑색 부분.



결과 1.

환경 : win10, 64bit. 화면해상도 1920x1080, 모니터 6개 .

(주 모니터 정보만 확보됨.)


결과 2.

환경 : win7, 64bit,  화면해상도 1280x1024 , 모니터1개 .





///752.




댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5