windows 程序中的HDC是什么?怎么用?

ljp_0913 2005-08-05 03:50:12
谢谢。
...全文
7318 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lujun-cc 2005-08-16
  • 打赏
  • 举报
回复
HDC 是 设备描述表(Device Context)的句柄 。

设备描述表中记录和此设备相关的各种信息,比如对于显示器来说,记录了显示器的尺寸、分辨率,还有当前选择的画笔、画刷、字体等GDI对象的信息。

可以将HDC理解做一个设备的表面,比如显示器的表明,打印机的表面等等,我们可以使用这个HDC在这些表明上绘制图形——很多GDI绘图函数,都需要使用这个HDC作为参数的。
bailindf 2005-08-15
  • 打赏
  • 举报
回复
就是画图的笔,可以改变它的属性,画图
hsuyuan 2005-08-11
  • 打赏
  • 举报
回复
在windows编程中类型名前面加H的基本是句柄
常用句柄
HBITMAP 保存位图信息的内存域的句柄
HBRUSH 画刷句柄
HCTR 子窗口控件句柄
HCURSOR 鼠标光标句柄
HDC 设备描述表句柄
HDLG 对话框句柄
HFONT 字体句柄
HICON 图标句柄
HINSTANCE 应用程序实例句柄
HMENU 菜单句柄
HMODULE 模块句柄
HPALETTE 颜色调色板句柄
HPEN 笔的句柄
HWND 窗口句柄
wshcdr 2005-08-11
  • 打赏
  • 举报
回复
用来画图的地方, 内部应该是一个索引,类似指针
fireman_lh 2005-08-05
  • 打赏
  • 举报
回复
A device context is actually a complicated web of structures and objects linked using pointers, spreading in both user mode application address space and kernel mode system address space.
A device context serves two important purposes within the graphics system. The main purpose is to provide an abstraction of a graphics device, such that anything above the device driver, which includes the graphics engine, the Win32 client DLLs, and the user application, can be device independent. Another usage of a device context is for storing commonly used drawing attributes, like foreground color, raster operation, pen, brush, font, etc., such that individual drawing calls do not have to carry these settings over and over again.
fireman_lh 2005-08-05
  • 打赏
  • 举报
回复
简单的说就是你画图的地方的句柄。
atgjplh 2005-08-05
  • 打赏
  • 举报
回复
学习一下!
honker110 2005-08-05
  • 打赏
  • 举报
回复
A device context is a structure that defines a set of graphic objects and their associated attributes, as well as the graphic modes that affect output. The graphic objects include a pen for line drawing, a brush for painting and filling, a bitmap for copying or scrolling parts of the screen, a palette for defining the set of available colors, a region for clipping and other operations, and a path for painting and drawing operations. The remainder of this section is divided into the following three areas.

MSDN里有,很详细
xuanwenchao 2005-08-05
  • 打赏
  • 举报
回复
handle device context 应该是设备上下文句柄吧,我认为!!!
xiao_xiao_zi 2005-08-05
  • 打赏
  • 举报
回复
绘图设备的句柄
用来唯一标识一个设备
通常作为某个函数的参数用
junguo 2005-08-05
  • 打赏
  • 举报
回复
图形设备的句柄,通过它在选定范围内进行画图,输出文字等操作!

/*----------------------------------------
ENDJOIN.C -- Ends and Joins Demo
(c) Charles Petzold, 1998
----------------------------------------*/

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("EndJoin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, TEXT ("Ends and Joins Demo"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static int iEnd[] = { PS_ENDCAP_ROUND, PS_ENDCAP_SQUARE, PS_ENDCAP_FLAT };
static int iJoin[]= { PS_JOIN_ROUND, PS_JOIN_BEVEL, PS_JOIN_MITER } ;
static int cxClient, cyClient ;
HDC hdc ;
int i ;
LOGBRUSH lb ;
PAINTSTRUCT ps ;

switch (iMsg)
{
case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;

SetMapMode (hdc, MM_ANISOTROPIC) ;
SetWindowExtEx (hdc, 100, 100, NULL) ;
SetViewportExtEx (hdc, cxClient, cyClient, NULL) ;

lb.lbStyle = BS_SOLID ;
lb.lbColor = RGB (128, 128, 128) ;
lb.lbHatch = 0 ;

for (i = 0 ; i < 3 ; i++)
{
SelectObject (hdc,
ExtCreatePen (PS_SOLID | PS_GEOMETRIC |
iEnd [i] | iJoin [i], 10,
&lb, 0, NULL)) ;
BeginPath (hdc) ;

MoveToEx (hdc, 10 + 30 * i, 25, NULL) ;
LineTo (hdc, 20 + 30 * i, 75) ;
LineTo (hdc, 30 + 30 * i, 25) ;

EndPath (hdc) ;
StrokePath (hdc) ;

DeleteObject (
SelectObject (hdc,
GetStockObject (BLACK_PEN))) ;
MoveToEx (hdc, 10 + 30 * i, 25, NULL) ;
LineTo (hdc, 20 + 30 * i, 75) ;
LineTo (hdc, 30 + 30 * i, 25) ;
}
EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}

VxD1 2005-08-05
  • 打赏
  • 举报
回复
我也想知道hdc是什么东东?

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧