教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

VC++技术内幕(windows编程篇)(3)

来源:网络收集 时间:2026-07-12
导读: 常一起使用的函数: SetWindowExt(..)//Sets the x- and y-extents of the window associated with the device context. SetViewportExt(..)//Sets the x- and y-extents of the viewport of the device context.

常一起使用的函数:

SetWindowExt(..)//Sets the x- and y-extents of the window associated with the device context.

SetViewportExt(..)//Sets the x- and y-extents of the viewport of the device context. 注意:

When the following mapping modes are set, calls to SetWindowExt and SetViewportExt functions are ignored:

MM_HIENGLISH,MM_HIMETRIC,MM_LOENGLISH,MM_LOMETRIC,MM_TEXT,MM_TWIPS

When MM_ISOTROPIC mode is set, an application must call the SetWindowExt member function before calling SetViewportExt.

9,坐标变换:(具体参见P54)

许多MFC库函数只能在设备坐标下工作(尤其CRect类成员函数)。可以认为CDC的所有成员函数都一逻辑坐标作参数。可以认为CWnd的成员函数都以设备坐标做参数。(所有在实际窗口上点击获得的坐标都是逻辑坐标)。在设置了设备环境的映射模式及相应的参数以后,CDC的LPtoDP和DPtoLP函数可以用来在逻辑坐标系和设备做表系之间进行转换。

在CView的虚函数OnPrepareDC中设置映射模式要比在OnDraw函数中要好。 //*注意:

CView::OnPrepareDC

virtual void OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL ); 应用程序将在调用OnDraw之前调用OnPrepareDC函数。

(OnPrepareDC在为屏幕显示而调用OnDraw函数之前,或在为打印或打印预览每一页而调用OnPrint成员函数之前。)

10,CScrollView支持滚动条的滚动,但不支持键盘的滚动。通过使用CWnd的ScrollWindow和SetViewportOrg函数,CScrollView类允许将视口原点移到窗口中的任何一个位置,甚至包括窗口区域的上部或窗口的原点的左边。

键盘输入是分两步处理的。OS向窗口发送类如WM_KEYDOWN和WM_KEYUP消息时用的是虚拟键盘码,在消息到达窗口之前,被翻译成WM_CHAR消息,该消息带着正常的键码。

利用对WM_KEYDOWN消息进行响应,对按键分别调用OnVScroll就可以使应用程序支持键盘的滚动。

CWnd::OnVScroll

afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar ); //// nSBCode:

SB_BOTTOM Scroll to bottom. SB_ENDSCROLL End scroll.

SB_LINEDOWN Scroll one line down. SB_LINEUP Scroll one line up. SB_PAGEDOWN Scroll one page down. SB_PAGEUP Scroll one page up.

SB_THUMBPOSITION Scroll to the absolute position. The current position is provided in nPos.

SB_THUMBTRACK Drag scroll box to specified position. The current position is provided in nPos.

SB_TOP Scroll to top. ////

The framework calls this member function(OnVScroll) when the user clicks the window‘s vertical scroll bar.

11,CView::OnInitialUpdate virtual void OnInitialUpdate( ); 说明:

OnInitialUpdate是视图窗口完全建立后框架调用的第一个函数。框架在第一次调用OnDraw前会调用OnInitialUpdate。

具体参见下:

Called by the framework after the view is first attached to the document, but before the view is initially displayed. The default implementation of this function calls the OnUpdate member function with no hint information .

12,MFC对140种Windows消息直接直接提供了相应的消息控制函数,当然,我们还可以定义自己的消息和相应的消息控制函数。

五种特殊Windows消息:

WM_CREATE,WM_CLOSE,WM_QUERYENDSESSION,WM_DESTROY,WM_NCDESTROY.(具体参见 p62-63页。这两页强烈建议看看,这里简要笔记三个最常用最重要的)

1)WM_CREATE消息:

The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. The window procedure of the new window receives this message after the window is created, but before the window becomes visible. The message is sent before the CreateWindowEx or CreateWindow function returns.

2)WM_CLOSE消息:

当关闭窗口或父窗口被关闭时,Windows都会发送WM_CLOSE消息。可以重新定义该消息响应函数OnClose来完全控制关闭过程。

3)WM_DESTROY消息:

Windows在发送WM_CLOSE消息之后,紧接着就会发送WM_DESTROY消息(响应这个消息的时候,窗口已经消失但还没有销毁)。

(可以响应这个消息来做一些销毁当前窗口后的一些事情,例如再弹出其它对话框发送其他的消息)

?

形设备接口(GDI)、颜色及字体

1,任何时候当程序需要直接在屏幕或打印机上绘图的时候,都需要调用GDI函数,GDI函数包含了一些用于绘制图形、位图以及文本的函数。

2,Windows的设备环境是GDI的关键元素,它代表了物理设备。每一个C++设备环境对象都有与之对应的Windows设备环境,并且通过一个32位类型的HDC句柄来标识。

3,MFC库设备环境类基类CDC包含了绘图所需要的所有成员函数,并且几乎所有派生类只有构造函数和析构函数不同(CMetaFileDC类除外)。

对于显示器来说,常用的派生类有CClientDC 和 CWindowDC,而对其它设备(如打印机或内存缓冲区),则可以构造一个基类CDC的对象。

对于显示器和打印机设备环境对象来说,应用程序框架会直接将句柄附在对象上;而对其它设备环境(如内存设备环境),为了将对象与句柄相联系,在构造完对象之后,还必须调用一个成员函数(进行初试化)。

4,CClientDC类 和 CWindowDC类 CClientDC( CWnd* pWnd );

四、

…… 此处隐藏:1513字,全部文档内容请下载后查看。喜欢就下载吧 ……
VC++技术内幕(windows编程篇)(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/592946.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)