用C++在電腦桌面上打個叉

寫了大半年C++,天天和“黑乎乎” 的小窗口你儂我儂?趕緊來打開一扇“Windows”,從窗口跳進(jìn)全新的GUI世界吧。
今天是個開始,我們的第一個任務(wù)是:只寫一二十行代碼,用 Windows自帶的原生接口,強(qiáng)行在桌面上打個大紅?,如圖:

先看視頻,一些代碼中用到 Windows API 函數(shù)說明,在視頻后面,更完整可 d2school?看。

1. 使用的 Windows API 函數(shù)
GetSystemMetrics
說明:?查詢(檢索)指定的 Windows (下同)系統(tǒng)的配置或度量。
在本例中,我們使用的 入?yún)?nIndex 有兩個:
SM_CXFULLSCREEN : 取主桌面的屏幕寬度;
SM_CYFULLSCREEN :取主桌面的屏幕高度。
注意:
如果有多個顯示器,僅取主桌面;
經(jīng)實測,寬度或高度不會包含任務(wù)欄。即:如任務(wù)欄布置為橫向(常見:底部),則取桌面高度時,不含任務(wù)欄高度,如果任務(wù)欄布置為豎向,則取桌面寬度時,不含任務(wù)的寬度。
本課使用:
SetTimer
原型:
說明:?設(shè)置一個定時器。
入?yún)ⅲ?/strong>
hwnd:指定 定時器要綁定的窗口的句柄;該窗口可接收定時消息,也可指定為 nullptr,則定時器改為調(diào)用 lpTimerFunc: 指定的回調(diào)函數(shù)。
nIDEvewnt:指定定時器事件編號;
uElapse:指定定時間隔時長,單位為毫秒;
lpTimerFunc :定時到點(diǎn)時,調(diào)用的函數(shù);
本課使用:
KillTimer
原型:
說明:?通過指定窗口句柄和定時器事件編號,結(jié)束之前設(shè)置的定時器。
本課使用:
GetDC
原型:
說明:?獲取入?yún)?hWnd 指定的窗口繪圖用的設(shè)備上下文(Device Context);如 hWnd 為 nullptr,則返回整個屏幕的設(shè)備上下文。
注意:?使用完后,需調(diào)用 ReleaseDC() 歸還。
本課使用:
ReleaseDC
原型:
說明:?釋放DC,通常該 DC 由 GetDC() 方法從指定窗口獲得。
本課使用:
CreatePen
原型:
說明:?創(chuàng)建指定風(fēng)格、寬度、顏色的筆資源。
參數(shù):
iStyle :支持: PS_SOLID(實線)、PS_DASH(虛線)、PS_DOT(點(diǎn)線)等風(fēng)格;
cWidth :寬度,單位為 象素;
colro : 顏色,可使用宏 RGB(r, g, b) 組合 red、green、blue 三顏色的分量來創(chuàng)建不同顏色。
注意:
筆使用結(jié)束后,需及時調(diào)用 DeleteObject() 以釋放所占用的資源。
本課使用:
DeleteObject
原型:
說明:?釋放給定的GDI資源,比如本課所創(chuàng)建的 HPEN。
本課使用:
MoveToEx
原型:
說明:?在 設(shè)備 hdc 上,將當(dāng)前繪圖位置移動入?yún)?x, y 所指定的位置;如果 lppt 不為空(指到某一 POINT結(jié)構(gòu)體上),則將返回在 本次 MoveToEx() 開始時的當(dāng)前繪制位置。注意,MoveToEx 僅移動位置,并不在 hdc 上留下痕跡。
特別說明: Windows API 中,尾部帶 Ex 的函數(shù),是對早先版本的不帶“Ex”的函數(shù)的擴(kuò)展,比如,MoveToEx 是對 MoveTo 函數(shù)的擴(kuò)展,后者不提供第4個入?yún)ⅰ?/p>
本課使用:
LineTo
原型:
說明:?在 hdc 上,使用當(dāng)前選中的畫筆(HPEN),從當(dāng)前繪圖位置,畫一條直線到 x, y 位置。
本課使用:
2. 完整代碼項目包下載
可到 www.d2school.com 下載。