看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《BSpowerx (B.S)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : windows.h : 問題(Question): : 目前用windows.h弄出了視窗 : 找到了GetCursorPos(LPPOINT) 來讀入滑鼠的座標, : 但出來的座標是從螢幕最左上角開始算起... : 而不是從使用視窗的左上角 這叫 screen coordinates (螢幕座標), 無緣無故座標就座標,特別加上螢幕兩個字,那一定是還有別種型態的座標... 另外一種叫 client-area coordinates (客戶座標、客戶區域座標)。 這有點重要,背起來。 補充的是,一個視窗在 OS 內部 (Windows),是用矩形來記載其寬度、高度及位置。 這不論他自己繪製出來的視窗外觀為何,都必須在此矩形區域內。 守規矩的視窗分成「客戶區」與「非客戶區」,其他守規矩的寫出來的程式,會把 想要繪製給使用者看的內容,繪製在客戶區的矩形內。因此客戶區重要到,從其 左上角開始也多了一個客戶區座標系統。 基本上 Windows 隨時待命,願意幫你把螢幕座標轉換成,某個視窗客戶區的座標系統, 介面叫做 ScreenToClient。所以你至少得提供螢幕座標,以及你想要針對的那個視窗 的「控制代碼」(Handle to Window, HDC, 句柄)。 : 隨後又找到GetWindowRect(HWND, LPRECT) 來獲得視窗的頂點座標 : 但...這個座標是視窗的最左上角, : 而不是使用者能使用的區域的左上角 : 示意圖:http://i.imgur.com/BdCYV.png : 我想得到2的位置, : 但這個函式抓到的位置是1 : 所以該怎麼做才能正確的得到滑鼠在視窗中的座標呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.128.4
purpose:HDC -> HWND 08/17 04:54
BSpowerx:感謝 08/17 12:35