[問題] 請問如何取得windows桌面的大小?

看板C_and_CPP作者 (啤酒肚)時間15年前 (2010/12/21 18:46), 編輯推噓3(3011)
留言14則, 6人參與, 最新討論串1/1
在windows上 取得桌面的大小 但扣掉最下方"開始"那一行的大小。 用 GetSystemMetrics(SM_CXSCREEN); GetSystemMetrics(SM_CYSCREEN); 只是取得屏幕解析度啊。。。 還是不知道桌面大小為何。 那請問要調用那個API才能查詢呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204

12/21 18:48, , 1F
扣掉開始的Client area 大小就好
12/21 18:48, 1F

12/21 18:53, , 2F
桌面大小是指什麼?
12/21 18:53, 2F

12/21 19:16, , 3F
重點應是在於取得工作列上的高度,(因寬度和桌面寬一樣)
12/21 19:16, 3F

12/21 19:16, , 4F
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
12/21 19:16, 4F

12/21 19:16, , 5F
RECT rc; ::GetWindowRect(hWnd, &rc);
12/21 19:16, 5F

12/21 19:17, , 6F
int iHeight = rc.bottom -rc.top;
12/21 19:17, 6F

12/21 19:17, , 7F
第一行的 "Shell_TrayWnd" 就是取得工作列的 handle
12/21 19:17, 7F

12/21 19:18, , 8F
其它的相信你知道怎麼做 :)
12/21 19:18, 8F

12/21 19:24, , 9F
話說並不是所有人的工作列都在下面...
12/21 19:24, 9F

12/21 19:24, , 10F
不過這只要判斷一下就知道了 並不是大問題
12/21 19:24, 10F

12/21 19:54, , 11F
LPH66 沒說我還真忘了這件事,不過用同樣方法也是能得到
12/21 19:54, 11F

12/23 17:28, , 12F
謝謝 真的有用 感恩啊
12/23 17:28, 12F

12/24 13:28, , 13F
SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0 );
12/24 13:28, 13F

12/27 16:14, , 14F
用SystemParametersInfo可以讓code比較clean :D
12/27 16:14, 14F
文章代碼(AID): #1D48MBtn (C_and_CPP)