VC++技术内幕(第四版)笔记(3)

分类: VC.NET   出处:iocblog整理  更新时间:2008-10-08   添加到收藏  

7,[致win32程序员]:

标准的基于windows应用程序会首先登记一个窗口类(不同于c++类[补:实际是个_wndclass结构体]),同时在处理过程中,还需要对每个类指定窗口过程(windows procedure)。每次应用程序调用createwindow建立一个窗口时候,都要指定一个窗口类做为参数,这样就把新建立的窗口和窗口过程函数连接起来了。每次windows给窗口发送消息时候,这个函数就会被调用(补:消息循环中dispatchmessage(&msg)分派消息到窗口的回调函数处理,os调用窗口回调函数进行处理),以检查用参数传送进来的消息码,并执行适当的代码来处理该消息。

mfc库应用程序框架有一个适用于大多数窗口类型的简单窗口类和窗口过程函数。该窗口过程函数会根据参数传进来的窗口句柄,在mfc的句柄映射表(handle map)中查找,从而得到对应的c++窗口对象指针。然后,该窗口过程函数用mfc运行时类(runtime class)系统来决定窗口对象的c++类。下一步,它从由消息分发映射函数生成的静态表中找到消息处理函数,最后用正确的窗口对象调用消息处理函数。

8,映射模式:

1)mm_text映射模式:坐标被映射到象素,x值向右递增,y值向下递增。可用它来表示[设备坐标]。

cdc::setmapmode(..)//设置映射模式

cdc::getmapmode(..)

cdc::setviewportorg(..)//设置视口原点

cdc::getviewportorg(..)

cdc::setwindoworg (..)//设置屏幕原点

cdc::getwindoworg(..)

2)固定比例映射模式(mm_hienglish,mm_himetric ,mm_lometric ,mm_loenglish,mm_twips )

固定比例映射模式均x值向右递增,y值向下递增,它们之间唯一差别是 实际的比例因子。如下:

mm_hienglish each logical unit is converted to 0.001 inch.

mm_himetric each logical unit is converted to 0.01 millimeter.

mm_loenglish each logical unit is converted to 0.01 inch.

mm_lometric each logical unit is converted to 0.1 millimeter.

mm_twips each logical unit is converted to 1/20 of a point(磅). (because a point is 1/72 inch, a twip is 1/1440 inch.)

//mm_twips常常用于打印机。

 

 

上一页 [1] [2] [3]



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。