发信人: black()
整理人: wenbobo(2002-12-06 22:33:17), 站内信件
|
以下文章转自武汉白云黄鹤站,希望有订阅mfc列表的多翻译几篇!
发信人: sallyer (斌斌), 信区: VC 标 题: MFC邮递表的中文翻译(转载) 发信站: 武汉白云黄鹤站 (Wed Jun 23 11:58:16 1999), 站内信件
MFC邮递表的中文翻译 我是一名mfc程序设计的爱好者,订阅了mfc的maillist,利用业余 时间将它翻译出来,希望能对mfc编程的朋友有所帮助,请朋友们指正.
第三十五期目录 杨晓东 1999.4.27 1.改变树形控件字体 2.视的边框 3.加一个列表视类 4.组合框问题 5.在一个循环中使用PeekMessage 6.在一个文档/视应用程序中使用MSCOMM ActiveX控件 7.win95中的编辑框
改变树形控件字体 问:我想改变一个树形视的字体,但我得不到期望的结果.我使用的是下 面这个语句, m_TreeCtrl.SetFont(pFont,bRedraw),其中pFont指针指 向一个有效的字体,bRedraw 设置为true.而该控件也能接受到WM_SETFONT 消息,但改变字体的属性完全不是我所设定的.现象如下:字体总是显示 为系统粗体10号;两个结点之间则是按照我设定的字体大小来决定距离 的....,为什么会这样? 答:从你的描述中可以知道,好象在调用方法SetFont()后CFont对象被 删除了.你不能在这里使用局部句柄,否则CFont的析构函数会删除HFONT 对象,所以树形控件得到了一个非法的字体对象.必须保证在这个树形 控件的生命周期内CFont对象一直可用,比如你可以在视类中定义. 回到本期目录
视的边框. 问:我想让一个视的边框有对话框边框的效果,有谁能帮助我? 答:我认为将一个视的外观感觉是一个对话框还没有固定的方法,但可 以在视中的OnPaint() 中对你的视用对话框的背景色填充背景,然后用 绘制一些适当大小的线条来模拟对话框的边框(你应该用GetSystemMetrics来 取得当前windows的设置).
回到本期目录
加一个列表视类. 问:我在ClassWizard中从CListView类中继承了一个新类,然后我什么 也没有做,开始编译很快就得到下面这个错误,为什么? 答: 在你的stdafx.h文件中加一条:#include 只有在最初建立项目时才 会包含所需要的,手工加入的类通常都要加入一个包含命令.
MFC有许多的头文件,应用程序向导(AppWizard)会根据你的设置在项目 中插入相应的头文件,但它并不会对你以后的扩展加入头文件. 看一下你项目中的stdafx.h文件,知道为什么里面会包含afxwin.h afxext.h等头文件? 你应该在这个头文件里加入你所指定的头文件,对于你这种情况,应该将 其加入到一系列包含命令之后. 我怎么会知道这个?看一下CListView的帮助,是overview,不是构造 或类成员函数,看见在最下面有#include 行,这在每个MFC类的overview 中都有,如果在你这种类似的情况下将其粘贴到你的代码中就可以了. 那么为什么应用程序向导不把每个可能用的头文件包含进来吧?因为 编译时间的缘故, 将文件包含在stdafx.h将会减少编译的时间,但预编 译project.pdf文件(在你的DEBUG目录中)对一个小的项目就有近5兆大 小,它会在你每次编译时被读取,包含每个可能的文件将会使文件变大, 反而会增加你的编译时间. 我还想请大家注意,如果想在建立一个新的视里加一些新的特性时, 由于应用程序向导建立项目时分为文档与视,所以它提供了CMyView::GetDocument 函数来取得指向文档类的指针,但 ClassWizard不知道彼此之间的关系 (那怕就只有一个),所以GetDocument需要返回一个指向当前视的指针, 应该手工将原先GetDocument代码加入到新的视中.
回到本期目录
组合框问题. 问:在组合框中显示图标用ComboBoxEx好象是理想的解决方法(我仅仅 想让它正常工作) 但为什么无论我选择的是drop-down或drop-list类 型,只有文字才能显示在下拉式菜单中? 答:你在声明m_ImageList变量时只在在OnInitDialog()函数内,当该函 数结束时,m_ImageList 也同时被清除,而CImageList的析构函数删除 了HIMAGELIST,试试将m_ImageList作为对话框的成员变量.
回到本期目录
在一个循环中使用PeekMessage. 问:我有一个工作线程,动态监视一个数据收集设备的状态.这是一个死 循环,在这个循环里我用::PeekMessage()查找少量的消息来主调整数 据收集设备的状态.但真正实行这个循环时,我似乎并没有方法将任何 消息发送给它. 答:你调用PeekMessage函数时是否使用了正确的参数?(比如说将PM_REMOVE 作为一个移动标志,将-1作为窗口的句柄?)不管怎样,PostThreadMessage() 都返回真.除非你传送过线程ID是非法的,否则它永远返回真.你必须从线 ,否则,就会出现你这样情况.
回到本期目录
在一个文档/视应用程序中使用MSCOMM ActiveX控件 问:我在一个MFC应用程序中使用了MSCOMM ActiveX,这个控件是通过 组件库加进去的, 如果这个程序是基于对话框的而这个控件是这个对 话框类的一个成员,那么工作一切正常,无论是调用成员还是发送comm 事件.但如果该应用程序是一个普通的文档/视程序,控件对象是主窗口 框架类的一个成员,程序总是出错. 答:参考一下MFC中的VCTERM样例,它在框架窗口中动态建立.看一下 CMainFrame::OnCreate()
回到本期目录
win95中的编辑框. 问:为什么95中编辑框不能填满整行? 答:一个可能的原因是因为字体尺寸的不同,我建议你这样做,你尽可能 的大些,因为你不可能知道你的用户会用那一种字体,理论上windows可 以改变对话框和控件在大小,但是通过现用字符的宽度来决定的.
回到本期目录 --------------------------------------------------------------------------------
前一期|返回MFC邮递表|后一期 玉海园[http://mfc2000.yeah.net]友情提供! -- 海内存知己,天涯若比邻。 祝sallyer永远快乐,健康,美丽。 送一枝----/---\---@给sallyer。 [email protected]
m;34m※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 202.114.1.132]m -- m;37m※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 210.39.3.50]m
-- ------------------------------------------------------------------------------- 孤客一身千里外,未知归日是何年 Email : [email protected]
※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.96.138.54]
|
|