日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows编程设备描述表的概念和在客户区绘制、在窗口标题栏绘制、在桌面绘制图解

發(fā)布時(shí)間:2025/4/14 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows编程设备描述表的概念和在客户区绘制、在窗口标题栏绘制、在桌面绘制图解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

設(shè)備描述表

設(shè)備描述表是一個(gè)定義一組圖形對(duì)象及其屬性、影響輸出的圖形方式(數(shù)據(jù))結(jié)構(gòu)。windows提供設(shè)備描述表,用于應(yīng)用程序和物理設(shè)備之間進(jìn)行交互,從而提供了應(yīng)用程序設(shè)計(jì)的平臺(tái)無(wú)關(guān)性。設(shè)備描述表又稱(chēng)為設(shè)備上下文,或者設(shè)備環(huán)境。

設(shè)備描述表是一種數(shù)據(jù)結(jié)構(gòu),它包括了一個(gè)設(shè)備(如顯示器和打印機(jī))的繪制屬性相關(guān)的信息。所有的繪制操作通過(guò)設(shè)備描述表進(jìn)行。設(shè)備描述表與大多 WIN32結(jié)構(gòu)不同,應(yīng)用程序不能直接訪問(wèn)設(shè)備描述表,只能由各種相關(guān)API函數(shù)通過(guò)設(shè)備描述表的句柄間接訪問(wèn)該結(jié)構(gòu)。

設(shè)備描述表總是與某種系統(tǒng)硬件設(shè)備相關(guān)。比如屏幕設(shè)備描述表與顯示設(shè)備相關(guān),打印機(jī)設(shè)備描述表與打印設(shè)備相關(guān)等等。

屏幕設(shè)備描述表,一般我們簡(jiǎn)單地稱(chēng)其為設(shè)備描述表。它與顯示設(shè)備具有一定的對(duì)應(yīng)關(guān)系,在windows GDI界面下,它總是相關(guān)于某個(gè)窗口或這窗口上的某個(gè)顯示區(qū)域。通常意義上窗口的設(shè)備描述表,一般指的是窗口的客戶(hù)區(qū),不包括標(biāo)題欄、菜單欄所占有的區(qū)域,而對(duì)于整個(gè)窗口來(lái)說(shuō),其設(shè)備描述表嚴(yán)格意義上來(lái)講應(yīng)該稱(chēng)為窗口設(shè)備描述表,它包含窗口的全部顯示區(qū)域。二者的操作方法完全一致,所不同的僅僅是可操作的范圍不同而已。

簡(jiǎn)單來(lái)說(shuō)設(shè)備描述表就是繪圖和輸出文字的區(qū)域,其默認(rèn)坐標(biāo)系,左上角為(0,0);

在C#這些語(yǔ)言里面此概念已經(jīng)被封裝了,可以不用管;

下面來(lái)分別在窗口客戶(hù)區(qū)、標(biāo)題欄、桌面上,輸出文字,通過(guò)獲取不同的設(shè)備描述表;

#include <windows.h> #include "resource.h"LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst; TCHAR szClassName[] = TEXT("dcDemo");int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil) {HWND hwnd;MSG messages;WNDCLASSEX wincl;hInst = hThisInstance;wincl.hInstance = hThisInstance;wincl.lpszClassName = szClassName;wincl.lpfnWndProc = WindowProcedure;wincl.style = CS_DBLCLKS;wincl.cbSize = sizeof (WNDCLASSEX);wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);wincl.hCursor = LoadCursor (NULL, IDC_ARROW);wincl.lpszMenuName = MAKEINTRESOURCE (IDC_DCDEMO);wincl.cbClsExtra = 0;wincl.cbWndExtra = 0;wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);if (!RegisterClassEx (&wincl))return 0;hwnd = CreateWindowEx (0,szClassName,TEXT("設(shè)備描述表 Demo"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,500,100,HWND_DESKTOP,NULL,hThisInstance,NULL);ShowWindow (hwnd, nFunsterStil);while (GetMessage (&messages, NULL, 0, 0)){TranslateMessage(&messages);DispatchMessage(&messages);}return messages.wParam; }LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {PAINTSTRUCT ps;HDC hdc, hdcbt,hdcdesk;RECT rt; char szBuffer[100]; switch (message){case WM_COMMAND:switch (LOWORD(wParam)){case IDM_dc: hdc=GetDC(hwnd);hdcbt=GetWindowDC(hwnd);hdcdesk=GetWindowDC(GetDesktopWindow());TextOut(hdc, 200,10,"在窗口客戶(hù)區(qū)繪制",16);TextOut(hdcbt, 200,10,"在整個(gè)窗口繪制",14);TextOut(hdcdesk, 200,10,"在桌面繪制",10);break;case IDM_ABOUT:MessageBox (hwnd, TEXT ("dcDemo v1.0\nCopyright (C) 2020\n by bo"),TEXT ("設(shè)備描述表Demo"), MB_OK | MB_ICONINFORMATION);break;case IDM_EXIT:DestroyWindow(hwnd);break;default:return DefWindowProc(hwnd, message, wParam, lParam); }break;case WM_CREATE:break;case WM_PAINT:hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rt); EndPaint(hwnd, &ps);break;case WM_DESTROY:PostQuitMessage (0);break;default:return DefWindowProc (hwnd, message, wParam, lParam);}return 0; }

啟動(dòng)程序,在桌面上,如下;未執(zhí)行繪制代碼;

當(dāng)執(zhí)行了繪制代碼之后,如下;分別在三個(gè)地方,窗口客戶(hù)區(qū)、窗口標(biāo)題欄、計(jì)算機(jī)桌面上,進(jìn)行了繪制;?

如果應(yīng)用需要在計(jì)算機(jī)桌面輸出內(nèi)容,可考慮此功能;

下面三句分別是,獲取窗口客戶(hù)區(qū)設(shè)備描述表,獲取整個(gè)窗口設(shè)備描述表,獲取桌面設(shè)備描述表;

hdc=GetDC(hwnd);
hdcbt=GetWindowDC(hwnd);
hdcdesk=GetWindowDC(GetDesktopWindow());

工程;?

資源和頭文件;?

#include "resource.h" #include <windows.h>/ // // Menu //IDC_DCDEMO MENU BEGINPOPUP "&File"BEGINMENUITEM "設(shè)備描述表 Demo", IDM_dcMENUITEM "E&xit", IDM_EXITENDPOPUP "&Help"BEGINMENUITEM "&About ...", IDM_ABOUTEND END #define IDM_EXIT 10001 #define IDM_ABOUT 10002#define IDC_DCDEMO 10101 #define IDD_ABOUTBOX 10102 #define IDM_dc 40001

?

總結(jié)

以上是生活随笔為你收集整理的Windows编程设备描述表的概念和在客户区绘制、在窗口标题栏绘制、在桌面绘制图解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久久久免费观看 | 超碰超碰超碰超碰 | 女女调教被c哭捆绑喷水百合 | 北条麻妃在线一区 | 欧美色图88 | 亚洲av无码电影在线播放 | 99国产精品国产精品九九 | 成年人精品 | 欧美久久久 | 欧美xxxx喷水 | 精品国产乱码久久久久久蜜臀网站 | 东京干手机福利视频 | 色蜜桃av | 人妻一区在线 | 日韩a级片 | 国产乱码一区二区三区播放 | 亚洲久久在线观看 | 精品精品视频 | 欧美成人国产 | 欧洲亚洲国产精品 | 成年人一级片 | 久久久一二三 | 狠狠鲁视频 | 老头老太做爰xxx视频 | 久久国产精品首页 | 涩涩视频免费看 | 在线国产区 | 97超碰人人模人人人爽人人爱 | 91精品国产一区二区三区蜜臀 | 一区二区三区激情视频 | youjizz日韩 | 成人羞羞在线观看网站 | 中文字幕一区二区三区在线视频 | 丰满少妇一区二区三区专区 | 亚洲一区二区自拍偷拍 | 国产精品一区二区三区免费在线观看 | 日韩一区av在线 | 少妇日b| 国产精品夜色一区二区三区 | 一区二区三区欧美日韩 | 在线观看中文字幕av | 日韩欧美色图 | 精品影院 | 国产亚洲欧美在线视频 | 国产精品久久久91 | 国产h视频在线 | 疯狂做爰的爽文多肉小说王爷 | 精品国产成人av在线免 | 91高清在线免费观看 | 亚洲一在线 | 韩国jizz| 操出白浆视频 | 他趴在我两腿中间添得好爽在线看 | 亚洲国产av一区二区 | 亚洲精品伦理 | 又欲又污又肉又黄短文 | 免费看污片网站 | 欧美亚洲色综久久精品国产 | 免费看黄禁片 | www.xxx国产| 国产中文字幕一区二区三区 | 青青草原国产在线 | 在线观看免费黄色小视频 | ts人妖在线观看 | 亚洲一级一区 | 国产午夜一区二区三区 | 成年人av在线播放 | 一级片aaa| 一级黄色在线视频 | 无码人妻av一区二区三区波多野 | 国产真实乱人偷精品人妻 | 日本美女一区二区三区 | 毛片最新网址 | 色综合天天综合 | 色先锋影院 | 91干网 | 国产精品久久精品三级 | 在线精品免费视频 | 特黄特色大片免费播放器使用方法 | 色婷婷yy | japanese24hdxxxx中文字幕 | 欧洲美熟女乱又伦 | 丰满熟女人妻一区二区三区 | 日本天堂在线观看 | 精品中文字幕视频 | www.四虎com| 玖玖久久 | 欧美一级特黄视频 | 视频免费在线观看 | 黄色福利站 | 日韩中文字幕综合 | 91精品国产99 | 国产精品熟妇一区二区三区四区 | 亚洲三级在线播放 | 日韩av影片在线观看 | 韩国伦理片在线观看 | 在线观看超碰 | 亚洲人性生活视频 | 九色91popny蝌蚪 |