windows编程07-DC

DC

设备环境(DC)

在Windows中,一切能在显示器上看到的都是图形,不但包括点、线、矩形、圆等,也包括文字、字体。对用户来说文字和图片是不同的,但它们在本质上都是图形,都需要在显示器上画出来。这也是Windows被称作图形操作系统的原因。

Windows不允许我们直接访问硬件,如键盘、显示器、打印机等,在与这些硬件通信前要获得设备环境(Device Context,简称 DC),进而间接的访问硬件。

设备环境有时也被称为设备上下文或设备描述表。

所谓设备环境,就是与当前硬件设备有关的各种信息,它是硬件设备的抽象。也就是说,设备环境就代表当前的硬件.

与文字输出、图形绘制有关的函数,在使用时大都需要传入一个参数,就是设备环境句柄。获取设备环境句柄有多种方式,常用的是 BeginPaint 函数。绘图完成后,还要释放句柄,使用 EndPaint 函数。

BeginPaint 和 EndPaint 函数

当发生 WM_PAINT 事件时,应用程序开始绘图。绘图之前需要先调用 BeginPaint 函数通知 Windows,告诉它当前程序需要使用显示器,你安排一下吧。BeginPaint 函数执行完毕就返回设备环境句柄,接下来就可以使用 GDI 函数绘图了。

绘图结束后,也需要调用 EndPaint 函数通知Windows,告诉它绘图结束了,你可以继续后面的工作了。

TextOut 函数

TextOut 函数可以在客户区输出一段文本,原型为:

BOOL TextOut(
    HDC hdc,  //设备环境句柄
    int nXStart,  //开始输出位置的x坐标
    int nYStart,  //开始输出位置的y坐标
    LPCTSTR lpString,  //要输出的字符串
    int cbString  //字符串的长度
);

每当发生WM_PAINT事件时,窗口就会发生重绘,这个时候需要向窗口输出文字:

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
	HDC         hdc;  //设备环境句柄
	PAINTSTRUCT ps;
	RECT        rect;
	switch (message){
		//窗口绘制消息
	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);
		TextOut(hdc, 100, 200, TEXT("你好Ty"), 4);
		EndPaint(hwnd, &ps);
		return 0;
		//窗口销毁消息
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, message, wParam, lParam);
}

结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发如雪-ty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值