当前位置:编程学习 > VC++ >>

VC++编程技巧

 

  

  1.使用中文

 

  VC++从1.5版到现在的6.0版,好像还没有出现过像VB一样的中文版。大概是Microsoft认为能够用VC++编程的人英文水平都很高吧,但这对用户可不行啊。VC++在中文平台下可以使用中文,但编译后那些按钮上的、对话框上的中文都成ASCII码了。何故?因为VC++在安装时是默认按单词节字符安装的,而中文字符是双字节编码,自然就不能正确显示了。要解决这个问题其实也很容易,将VC++光盘上DEVSTUDIOSHAREDIDEBINIDE路径下的中文资源语言模块Appwzchs.dll拷贝至硬盘DevStudioSharedIDEBINIDE路径下即可。

 

  2.位图按钮的使用

 

  我们知道Windows是一个图形界面的操作系统,如果在我们的应用程序中加入一些图形的话,会起到锦上添花的效果。在VC++中使用位图,并不像在VB中信手拈来那么简单。不过也并不复杂,其中以位图按钮用途较广。

 

  选定要使用位图的按钮(以OK按钮为例,假设其标识符为IDC_BtonOK),选其属性中的Owner draw选项,此时,在对话框编辑器中就可看到原先显示在按钮上的字符都消失了。将按钮的Caption改为OK(必须为大写)。打开Insert菜单,单击其中的Resource选项,随后选择Bitmap。再按下Import(导入)按钮,将所需位图导入项目(Project)。可以在Resource View窗口中通过右键单击刚才导入的位图,将其ID(标识符)改为"OKU",注意:字符必须为大写,双引号及字母U必不可少。字母U代表的按钮为按下状态时所显示的位图。此外还可使用后缀D、F、X,分别表示按下、拥有输入焦点时、按钮处于无效状态时所显示的位图。通过对同一个按钮的不同状态使用不同的位图,很容易做出具有动态效果的按钮。

 

  当将按钮所需使用的位图导入到项目中后,就应该在使用位图按钮的那个对话框的类声明文件中加入位图按钮变量的定义CBitmapButton m_BtonOK。同时,在适当的位置(一般是在对话框的OnInitDialog()函数中)加入如下语句:m_BtonOK.AutoLoad(IDC_BtonOK),使程序在运行时将位图装入内存并显示。至此,创建位图按钮的整个步骤即告结束。

 

  上述方法不仅限于创建位图按钮,还可用于在对话框上显示简单的位图。嘘,告诉你一个小秘密,位图按钮所使用的颜色最多可达256种,而非位图编辑器中的16种。但对于256色位图,当在导入VC++的位图编辑器后就不能使用该编辑器作任何修改。否则在编译连接后,原先256色位图就变成16色位图了。

 

  3.通用对话框的使用

 

  在编程中,自己要设计存储或打开文件时的对话框是件很头疼的事。不过Windows既然已经为我们提供好了现成的通用对话框,只管拿来用就是了。先在使用文件对话框的类的类定义文件中加入对象定义CFileDialog m_OpenDialog(TRUE,"txt","*.txt")。随后,在需要使用该对话框的地方加入以下语句:m_OpenDialog.Domodal();

 

  其调用规则为:

 

  CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPR OMPT,LPCTSTR lpszFilter=NULL,CWnd * pParentWnd=NULL);

第一个参数bOpenFileDialog为TRUE或FALSE。TRUE为打开文件;FALSE为保存文件。

 

  第二个参数lpszDefExt为缺省的扩展名。

 

  第三个参数lpszFileName为显示在文件名组合框的编辑框的文件名,一般可选NULL第四个参数dwFlags为对话框风格,一般为OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,即隐藏只读选项和覆盖已有文件前提示。

 

  第五个参数LpszFilter为下拉列表枢中显示文件类型。

 

  第六个参数pParentWnd一般可选NULL。

 

  例如:在文件类型列表框的编辑框要显示"可执行文件(*.exe)",而在它的下拉列表框中列出"小型可执行文件(*.com)、批处理文件(*.bat)、All Files(*.*)"内容,则变量定义如下:CFileDialogc m_OpenDialog(TRUE m_OpenDialog(TRUE,"exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"可执行文件(*.exe) | *.exe|小型可执行文件(*.com)|*.com |批处理文件(*.bat) | *.bat | All Files (*.*) | *.* ||",NULL);说明:第五个参数lpszFilter为一个指向字符串的指针,在列表框中要显示的字符后跟一个用"|"括起来的字符串,为要显示文件的文件类型。

 

  4.最高窗口的实现

 

  最高窗口就是总浮动在其他窗口上的,不会被一般窗口遮住的窗口,最高窗口技术在编程中有着很广泛的应用。VC++中对基于SDI、MDI的运用程序,要实现最高窗口,只要在框架窗口类CMainFrame中的PreCreateWindow()函数中加入"cs.dwExStyle =WS_EX_TOPMOST;"即可。关于函数PreCreateWindow()及结构CREATESTRUCT的详细信息可参见VC++的联机文档。

 

  而对基于对话框的运用程序,如何实现最高窗口却很少论及,以下便是一种实现方法。

 

  重载要实观最高窗口的对话框的OnInitDialog()函数,方法是进入ClassWizard,在Object ID列表框中选择该对话框的ID,在Message列表框中选择WM_INITDIALOGG,单击Add Function按钮后,即对onlnitDialog函数进行了重载。再按下Edit code按钮,加入以下语句:

 

  const CWnd * pWndInsertAfter;pWndInsertAfter = &wndTopMost;SetWindowPos(pWndInsertAfter,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);函数SetWindowPos原型为BOOL SetWindowPos(const CWnd * pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);pWndInsertAfter为指向标识窗口类型的CWnd对象的指针。

 

  x,y为窗口左上角的坐标。

 

  cx,cy为窗口的宽与高。nFlags确定窗口的大小及位置。当为SWP_NOSIZE时,忽略cx,cy。当为SWP_NOMOVE时,忽略x,y。

 

  5.窗口最大化、最小化的实现

 

  当利用A

补充:软件开发 , Vc ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,