獲取裝置的控制代碼

2021-06-19 07:14:47 字數 1538 閱讀 5933

獲取裝置內容控制代碼的方法,hdc hdc;在處理wm_paint訊息裡

1. paintstruct  ps;

hdc = beginpaint(hwnd,&ps); //獲取裝置環境控制代碼

endpaint(hwnd,&ps);//釋放資源

處理非wm_paint(如在wm_create)訊息裡使用以下函式載入裝置

2.使用getdc()返回控制代碼可以在整個顯示區域繪圖,在處理非wm_paint訊息裡

hdc = getdc(hwnd); //獲取控制代碼

releasedc(hwnd,hdc); //釋放裝置資源

3.使用getwindowdc()返回裝置內容控制代碼,可以在程式顯示的整個視窗上繪圖,包括標題列、選單、滾動條和框架

getwindowdc(hwnd);

releasedc(hwnd,hdc);

4. 使用createdc()建立裝置內容並返回控制代碼,

函式原型:hdc createdc(lpctstr lpszdrive,lpctstr lpszdevice, lpctstr lpszoutput, const devmode *lplnitdata);  

lpszdriver:  windows nt:指向乙個以null結尾的字串的指標,該字串為顯示驅動指定display或者指定乙個列印驅動程式名,通常為winspool。   

在基於32位的應用程式中,該引數被忽略或者為null。但有乙個例外,可以通過指定以null結尾的display來得到乙個顯示裝置上下文環境,如果該引數為display,

其他所有的引數必須為null。   

lpszdevice:指向乙個以null結尾的字串的指標,該字串指定了正在使用的特定輸出裝置的名字,它不是印表機模式名。lpszdevice引數必須被使用。   

lpszoutput:該引數在32位應用中被忽略;並置為null,它主要是為了提供與16位應用程式相容,更多的資訊參見下面的注釋部分。   

lplnitdata:指向包含裝置驅動程式的裝置指定初始化資料的devmode結構的指標,documentproperties函式檢索指定裝置獲取已填充的結構,如果裝置驅動程式使用

使用者指定的預設初始化值。則lplnitdata引數必須為null。返回值:成功,返回值是特定裝置的裝置上下文環境的控制代碼;失敗,返回值為null。

例如要獲取整個螢幕的裝置內容控制代碼

hdc = createdc(_t(「display」),null,null,null);

deletedc(hdc);

5. 有時您只是需要取得關於某裝置內容的一些資訊而並不進行任何繪畫,在這種情況下,您可以使用createic來取得乙個」資訊內容」的控制代碼,

hdc = createic(_t(「display」),null,null,null);

不能用這個資訊內容控制代碼往裝置上寫東西;

使用點陣圖時,取得乙個」記憶體裝置內容」有時是有用的

hdcmem = createcompatibledc (hdc) ;

deletedc (hdcmem) ;

可以將位圖選進記憶體裝置內容,然後使用gdi函式在位圖上繪畫

相同HID裝置的控制代碼獲取

思路其實很簡單 通常我們使用pid和vid來獲得不同裝置的控制代碼,相同pid和vid的裝置,就需要其他的特徵來獲取控制代碼。相同hid的裝置,裝置路徑是不同的,可以用裝置路徑作為區分,來獲得控制代碼即可。else if devdetail null free devdetail if hidhan...

獲取裝置上下文控制代碼

1.hdc beginpaint hwnd,ps endpaint hwnd,ps 2.hdc getdc hwnd releasedc hwnd,hdc 這兩種方法的區別是第乙個只能在invalid區域draw,然後將invalid區域valid。第二個能在相應視窗的整個客戶區的任何地方draw....

控制代碼 控制代碼工具 VC 獲取控制代碼

控制代碼 handle 是乙個用來標識物件的識別符號。windows之所以要設立控制代碼,根本上源於記憶體管理機制的問題,即虛擬位址。簡而言之資料的位址需要變動,變動以後就需要有人來記錄 管理變動,因此系統用控制代碼來記載資料位址的變更。在程式設計中,控制代碼是一種特殊的智慧型指標,當乙個應用程式要...