您的位置:逆风者 VC++ 正文
 添加时间:2007-09-11 原文发表:2007-09-11 人气:140 来源:vckbase.com

本文章共10305字,分6页,当前第6页,快速翻页:
 


  (45) 如何一个创建三态下压按钮
  可以使用新的BS_PUSHBUTTON 风格位和检测框以及按钮来创建一个三态下压按钮。这很容易,只需将检测框和按钮拖拉到对话中并指定属性Push—like即可。不用任何附加程序就可以成为三态下压按钮。

逆@风@者

  (46) 如何动态创建控件
  分配一个控件对象的实例并调用其Create成员函数。开发者最容易忽略两件事:忘记指定WS_VISBLE标签和在栈中分配控件对象。下例动态地创建一个下压按钮控件:

  //In class declaration (.H file ).
  private : CButton* m _pButton

  //In class implementation (.cpp file ) .
  m_pButton =new CButton
  ASSERT_VALID (m_pButton)
  m_pButton —>Create (_T ("Button Title ") , WS_CHILD |WS_VISIBLE |BS_PUSHBUTTON. Crect ( 0, 0, 100 , 24) , this , IDC _MYBUTTON )

  (47) 如何限制编辑框中的准许字符
  如果用户在编辑控件中只允许接收数字,可以使用一个标准的编辑控件并指定新的创建标志ES_NUMBERS,它是Windows 95新增加的标志,该标志限制 编辑控件只按收数字字符。如果用户需要复杂的编辑控件,可以使用Microsoft 的屏蔽编辑控件,它是一个很有用的OLE定制控件。

如果希望不使用OLE 定制控件自己处理字符,可以派生一个CEdit类并处理WM_CHAR消息,然后从编辑控件中过滤出特定的字符。首先,使用ClassWizard建立一个 CEdit的派生类,其次,在对话类中指定一个成员变量将编辑控件分类在OnInitdialog 中调用CWnd: : SubclassDlgItem .

 


  //In your dialog class declaration (.H file )
  private : CMyEdit m_wndEdit // Instance of your new edit control .

  //In you dialog class implementation (.CPP file )
  BOOL CSampleDialog : : OnInitDialog ( )
  {
  …

  //Subclass the edit lontrod .
  m_wndEdit .SubclassDlgItem (IDC_EDIT,this)

  …
  }

  使用ClassWizard处理WM_CHAR消息,计算nChar参量并决定所执行的操作,用户可以确定是否修改、传送字符。下例说明了如何显示字母字符,如果字符是字母字符,则调用CWnd OnChar,否则不调用OnChar.

  //Only display alphabetic dharacters .
  void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags )
  {
  //Determine if nChar is an alphabetic character.
  if (: : IsCharAlpha ( ( TCHAR) nChar ) )
  CEdit : : OnChar (nChar, nRepCnt , nFlags )
  }

  如果要修改字符,则不能仅仅简单地用修改过的nChar调用CEdit: : OnChar,然后CEdit: : OnChar调用CWnd: : Default获取原来的wParam 和lParam 的值,这样是不行的。要修改一个字符,需要首先修改nChar,然后用修改过的nChar调用CWnd: : DefWindowProc。下例说明了如何将字符转变为大写:

  //Make all characters uppercase
  void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags )
  {
  //Make sure character is uppercase .
  if (: : IsCharAlpha ( .( TCHAR) nChar)
  nChar=: : CharUpper(nChar )

  //Bypass default OnChar processing and directly call
  //default window proc.
  DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt, nFlags ))
  }


 
本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 5 - 6
相关文章

VC实用小知识总结 (一)
超强仿QQ自动伸缩窗口
WIN32程序挂钩SetLastError,输出错误描述到
Spy++原理初探
汉诺塔游戏的设计
关于控件注册和使用许可问题的解决办法
基于MFC对话框的NT服务程序框架
计算MDI子窗口数,仅显示文件夹的打开对话框
PE文件格式详解(下)
GDI和GDI 对象的相互转换
BMP图象解析
让你的软件界面更漂亮(五)
MFC中基于对话框程序快捷键的实现
用递归的方法画分形图
利用IJG JPEG Library压缩图像为jpg格式
软件框架的利器、TangramMini组件应用教程六
让你的软件界面更漂亮(六)-- 仿QQ主界面之L
对OpenCV中的平面划分相关函数使用探索
探讨性能测试中的计时问题
用命令模式实现对象存储——对象与关系数据

相关评论


本文章所属分类:首页 VC++

  热门关键字: