📄 9911.txt
字号:
=====================================================
《编 程 技 术》
一份属于广大编程爱好者的电子杂志
这是一份完全关于探讨编程的免费电子杂志
您可以任意传播本刊,但必须保持它的完整
本刊承诺绝不向订户发送任何形式的垃圾邮件!
第11期 99/06/06
=====================================================
<本期栏目>
*刊首语*
*雕虫小技*
Visual C++编程技巧
*技术文档*
TCHimage组件实现图形切换效果
用Delphi编写打印程序的窍门
让C/C++图形程序独立运行
让VC++支持中文
Visual Basic设计多媒体应用程序
*疑难杂症*
*****************************************************
<刊首语>
祝贺本刊订户勇超1000,大家鼓掌(啪啦、啪啦、啪啦)。
没啥说的,我会以更好的内容来回报大家的。
不知道这里有没有喜欢看鬼故事的朋友,我在主页上开辟
了一个子栏目“鬼话连篇”,不定期更新,欢迎感兴趣的朋友
常来看看。
*****************************************************
*****************************************************
<雕虫小技>
Visual C++编程技巧
1、如何获取一个对话控件的指针
有两种方法。其一,调用CWnd: : GetDlgItem,获取一个CWnd*指针调用成员
函数。下例调用GetDlgItem,将返回值传给一个CSpinButtonCtrl*以便调用
CSpinButtonCtrl : : SetPos 函数:
BOOL CSampleDialog : : OnInitDialog ( )
CDialog : : OnInitDialog ( ) ;
//Get pointer to spin button .
CSpinButtonCtrl * pSpin - ( CSpinButtonCtrl *) GetDlgItem (IDC_SPIN) ;
ASSERT _ VALID (pSpin) ;
//Set spin button's default position .
pSpin —> SetPos (10) ;
return TRUE ;
}
其二, 可以使用ClassWizard将控件和成员变量联系起来。在ClassWizard中
简单地选择Member Variables标签,然后选择Add Variable …按钮。如果在
对话资源编辑器中,按下Ctrl键并双击控件即可转到Add Member Variable对话。
2、如何禁止和使能控件
控件也是窗口,所以可以调用CWnd : : EnableWindow使能和禁止控件。
//Disable button controls .
m_wndOK.EnableWindow (FALSE ) ;
m_wndApply.EnableWindow (FALSE ) ;
3、如何改变控件的字体
由于控件是也是窗口,用户可以调用CWnd: : SetFont指定新字体。该函数用
一个Cfont指针,要保证在控件撤消之前不能撤消字体对象。下例将下压按钮
的字体改为8点Arial字体:
//Declare font object in class declaration (.H file ).
private :
Cfont m_font ;
// Set font in class implementation (.Cpp file ). Note m_wndButton is a
//member variable added by ClassWizard.DDX routines hook the member
//variable to a dialog button contrlo.
BOOL CSampleDialog : : OnInitDialog ( )
…
//Create an 8-point Arial font
m_font . CreateFont (MulDiv (8 , -pDC—> GetDeviceCaps (LOGPIXELSY) , 72).
0 , 0 , 0 , FW_NORMAL , 0 , 0, 0, ANSI_CHARSER, OUT_STROKE_PRECIS ,
CLIP_STROKE _PRECIS , DRAFT _QUALITY
VARIABLE_PITCH |FF_SWISS, _T ("Arial") );
//Set font for push button .
m_wndButton . SetFont (&m _font );
…
}
4、如何在OLE控件中使用OLE_COLOR数据类型
诸如COleControl : : GetFortColor和COleControl : : GetBackColor等函数
返回OLE _COLOR数据类型的颜色,而GDI对象诸如笔和刷子使用的是COLORREF
数据类型,调用COleControl : : TranslateColor可以很容易地将OLE_COLOR
类型改为COLORREF类型。下例创建了一个当前背景颜色的刷子:
void CSampleControl : : OnDraw (CDC* pdc
const Crect& rcBounds , const Crect& rcInvalid )
//Create a brush of the cuttent background color .
CBrush brushBack (TranslateColor (GetBackColor ( ) ) );
//Paint the background using the current background color .
pdc—> FilllRect (rcBounds , &brushBack) ;
//other drawign commands
…
}
5、在不使用通用文件打开对话的情况下如何显示一个文件列表
调用CWnd: : DlgDirList或者CWnd: : DlgDirListComboBox, Windows 将自动
地向列表框或组合框填充可用的驱动器名或者指定目录中的文件,下例将Windows
目录中的文件填充在组合框中:
BOOL CSampleDig : : OnInitDialog ( )
CDialog : : OnInitDialog ( )
TCHAR szPath [MAX_PATH] = {"c:\\windows"} ;
int nReslt = DlgDirListComboBox (szPath , IDC_COMBO , IDC_CURIDIR,
DDL_READWRITE |DDL_READONLY|DDL_HIDDEN|
DDL_SYSTEM|DDL_ARCHIVE ) ;
return TRUE ;
}
6、为什么旋转按钮控件看起来倒转
需要调用CSpinCtrl : : SetRange 设置旋转按钮控件的范围,旋转按钮控件的
缺省上限为0,缺省下限为100,这意味着增加时旋转按控件的值由100变为0。
下例将旋转按钮控件的范围设置为0到100:
BOOL CAboutDlg : : OnInitDialog ( )
CDialog : : OnInitDialog ( )
//set the lower and upper limit of the spin button
m_wndSpin . SetRange ( 0 ,100 ) ;
return TRUE ;
}
Visual C++ 4.0 Print对话中的Copise旋转按钮控件也有同样的问题:按下Up按
钮时拷贝的数目减少,而按下Down 按钮时拷贝的数目增加。
7、为什么旋转按钮控件不能自动地更新它下面的编辑控件
如果使用旋转按钮的autu buddy特性, 则必须保证在对话的标记顺序中buddy窗
口优先于旋转按钮控件。从Layout菜单中选择Tab Order菜单项(或者按下Crtl+D)
可以设置对话的标签顺序。
8、如何用位图显示下压按钮
Windows 95按钮有几处新的创建风格,尤其是BS_BITMAP和BS_ICON,要想具有位
图按钮,创建按钮和调用CButton : : SetBitmap或CButton : : SetIcon时要指
定BS_BITMAP或BS_ICON风格。
首先,设置按钮的图标属性。
然后,当对话初始化时调用CButton: : SetIcon。注意:下例用图标代替位图,
使用位图时要小心,因为不知道背景所有的颜色——并非每个人都使用浅灰色。
BOOL CSampleDlg : : OnInitDialog ( )
CDialog : : OnInitDialog ( ) ;
//set the images for the push buttons .
m_wndButton1.SetIcon (AfxGetApp ( ) —> LoadIcon (IDI _ IPTION1) )
m_wndButton2.SetIcon (AfxGetApp ( ) —> LoadIcon (IDI _ IPTION2) )
m_wndButton3.SetIcon (AfxGetApp ( ) —> LoadIcon (IDI _ IPTION3) )
return TRUE ;
}
*****************************************************
*****************************************************
<技术文档>
TCHimage组件实现图形切换效果
(湖北 周新)
Delphi3.0与Authorware、Director、ToolBook等多媒体工具软件相比,
没有提供图形切换效果组件,不免使其制作的多媒体程序看上去有些呆板。
在《PC世界3》上我发现了安徽的李新华朋友制作图形切换效果组件
TCHimage,喜爱用Delphi编程的朋友不妨拷下来一试。下面我简单介绍一下
这个组件的使用方法∶
TCHimage组件是由Timage派生的子类。要使用这个组件,首先在DELPH中
选择“COMPONENT/INSTALL COMPONENT”。
选择“UNIT FILE NAME”,输入文件名TEST.PAS,按OK键,系统自行将
TCHIMAGE组件加入到SAMPLE控件组中,这时便可以使用TCHIMAGE类了。下面
通过一例具体介绍一下该组件的用法。
首先从SAMPLE控件组中选择TCHIMAGE,在FORM中创建一个TCHIMAGE对
象,打开属性表,可以看到其基本属性与其父类TIMAGE一致,只是多了一个
EFFECT属性,此属性即决定其PICTURE指定图形的切换效果,从0~24,总共
25个值。这样,只需简单设置EFFECT的值,便可使你的图形有多达25种形式
不同、内容丰富的切换方式,真是帅呆了。同时,在程序执行过程中,你还
可以通过随时调用SetEffect(Effect:byte,FileName:string)过程动态实现
图形效果的切换,使你的应用程序更加千变万化,丰富多彩。以下就以一例
说明TCHIMAGE是怎样设置的。
1.创建一个FORM,在SAMPLE构件组中选择TCHIMAGE构件,在FORM中指定
大小。
2.激活TCHIMAGE属性框,在EFFECT属性栏中输入0,PICTURE属性可暂时
不写,留待程序中再动态加入(对于TCHimage的Picture属性,可在设计期指
定,但这样可能会对图形切换时的速度有一定的影响)。
3.程序代码如下:
procedure TForm1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -