| 您的位置: >> 相关知识 >> 桌面应用程序 >> Visual C/C++ >> |
|
合金网络科技 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 添加日期:2008-2-2 点击次数:0次 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(a) CEdit控件 这个控件主要是文本输入,如用户名,密码; CEdit常用属性使用说明: Multiline: 选中这个这属性,表示可以支持多行输入; Want return: 表示支持换行; Read-only: 选择中,表示只能读,不能修改,文本框为灰色; Password: 表示接受的是密码.但显示是***; Vertical scroll:表示支持垂直滚动条; 常用函数说明: BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); dwStyle: 表示控件style 常用常使用这几个WS_CHILD , WS_VISIBLE,WS_TABSTOP Rect:是一个矩形结构,表示文本框的大小; pParentWnd: 父窗口指针; nID: 给这个Edit分配的ID号; BOOL SetReadOnly( BOOL bReadOnly = TRUE ); 设置是否只读; 其他就不介绍了,根据你要实现的功能看看msdn就行了; (b) CComboBox控件 又称作组合框控件,其有三种形态可供选择, 1.简单组合框(Simple)2.下拉组合框(Drop-down)3.下拉列表式组合框(Drop-down list). CComboBox控件的常用设置属性说明: type属性:里面一共有三个选项.就是其三种形式, 我们常用的是后两种形态,其区别就是Dropdown的编辑区为可编辑控件,而droplist为静态控件. Data属性: 当程序初始化的时候,下拉列表将显示其属性里面的内容,内容用分号分隔.其属性只支持后2中形式, Sort属性: 对添加到下拉列表框中的数据自动进行排序,如果你不想他改变你的显示序列,把他设置成False. 控件是一个窗口.其基类是为CWnd.所以CComboBox也可以使用CWnd的一些函数 1.GetCount() 函数: 用以获得列表框中的选项数目. int GetCount() const;(此乃函数原型,我会列在每条的后面)下面的例酒是程序中各个按钮里面的代码 int i; CString str; i=m_cbox.GetCount(); str.Format ('%d',i); m_end='一共有'+str+'个数据'; UpdateData(FALSE); 2.GetCurSel() 函数: 用以得到用户选中下拉列表框中数据的索引值.返回的值是重0开始的,如果没有选择任何选项将会返回-1 Int GetCurSel() const int i; CString str; i=m_cbox.GetCurSel (); str.Format ('%d',i+1); if (i==-1) m_end='你什么都没有选'; else m_end='你选的是第'+str+'项'; UpdateData(FALSE); 3.SetCurSel函数: 选取列表框中的一个选项,索引从0开始,-1为什么都不选.当你需要把列表框中已经选取的内容清空时就可以使用这个函数; if(m_i<3) m_cbox.SetCurSel (m_i++);//m_i为int型变量 用以计数 else { m_cbox.SetCurSel (-1); m_i=0; } 4.SetEditSel函数:设置编辑区中蓝色选中字段的长度, BOOL SetEditSel( intnStartChar,int nEndChar ); nStartChar是起始的位置,当设置为-1时为不选择任何字段,nEndChar是结束位置.还有一个对应的函数GetEditSel是取得其位置,在此不详解. m_cbox.SetEditSel (3,5);//在编辑框中打入一串数字在按此按钮就能看到效果 //其作用就是选中第3到第5个字符作为热点 5.LimitText()函数. 其作用是限制在编辑框中键入的文本长度,BOOL LimitText(int nMaxChars); 当nMaxChars为0时,不是不能输入,而是长度最大化为65535字节 6.GetLBText()函数. 其原型为void GetLBText( int nIndex, CString&rString ). nIndex为列表框中数据的索引值, rString 为字符串,其作用就是把索引号为 nIndex的数据放到 rString变量中. 与其对应的GetLBTextLen(intnIndex)函数就是得到索引号为 nIndex中数据的长度 m_cbox.GetLBText (2,m_end); // GetLBText按钮 UpdateData(0); CString str; //GetLBTextLen按钮 int i=m_cbox.GetLBTextLen (2); str.Format ('%d',i); m_end=str; UpdateData(FALSE); 7.AddString() DeleteString() InsertString() ResetContent() 四个函数放在一起,他们都是针对下拉列表框的处理函数, AddString(LPCTSTR lpszString) 是在列表框的尾巴添加一条数据,参数为字符串. DeleteString(UINT nIndex)为删除指定索引为nIndex的数据. InsertString(int nIndex, LPCTSTR lpszString)在索引nIndex处插入IpszString的内容. ResetContent()是清除列表框中所有的内容. 8.SetDroppedWidth(UINT nWidth) 函数.用于设定下拉列表框的最小宽度,当下拉列表框中的数据很长不能完全显示时,我们可以使用这个函数把列表框的宽度设置的大些.同样GetDroppedWidth()是返回列表框的宽度. (c) radio button 常用属性介绍: 经常使用到的属性就是group 和 tab stop了 这两个属性是一起使用的,可以把几个radio button归为一组.方法是根据tab-order,把要归为一起的那几个radio button的tab order连续,把第一个设为group属性,取消掉tab stop属性,然后把最后一个radio button取消掉group ,勾上tab stop属性就成功了.这样弄的功能是把它们都关联起来,当选择其中一个,其它的会取消选中. 一般的radio button 都是默认的为 auto,在同为一组的时候点另一个会取消先前选中的那个。 若要实现你所说的过程,需要取消 auto 属性。 再为你的这个radio button 添加一个 CButton 类的变量,假设ID为ID_RADIO1,变量名为m_radio1。 不过通过类向导好像无法添加,这时可以手动添加: //头文件 DDX_Control(pDX, IDC_RADIO1,m_radio1);//手动添加的部分 //.cpp文件 在CPP文件中的DoDataExchange函数中添加如下代码: void CTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestDlg) DDX_Control(pDX, IDC_RADIO1,m_radio1);//手动添加的部分 //}}AFX_DATA_MAP } 这样可以完成了变量和radio button关联; 设置radio button 状态可以使用这个函数SetCheck(int n); n = 0;表示不选 n = 1;表示选择 n = 2;没有用过,不知道. (d) CTreeCtrl树控件: 我使用这个控件主要是列出自己过去些好了的日志,自己可以通过树控件快速访问以前写的日志; 这里主要介绍一些常用的函数: InsertItem()函数,功能是插入一个数节点.它的原型如下: HTREEITEM InsertItem( LPTVINSERTSTRUCT lpInsertStruct ); HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter ); HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST ); HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST); 这里以: HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST); 这个为例: lpsezItem: 表示该节点显示时的名称; nImage : 表示结点没被选中时所使用图片序号 nSelectedImage :为结点被选中时所使用图片序号。 hParent :代表父结点的句柄 hInsertAfter: 当前添加的结点会排在hInsertAfter表示的结点的后面, 默认值是最后面; 使用小图标时,要使用CTreeCtrl类的成员函数CImageList* SetImageList( CImageList * pImageList, int nImageListType ),指明当前控件所使用的图像列表(ImageList),nImageListType为TVSIL_NORMAL。 此外CTreeCtrl还提供了一些函数用于得到/修改控件的状态: ·HTREEITEM GetSelectedItem( )将返回当前选中的结点的句柄; ·BOOL SelectItem( HTREEITEM hItem )将选中指明结点; ·BOOL GetItemImage( HTREEITEM hItem, int& nImage, int& nSelectedImage ) BOOL SetItemImage( HTREEITEM hItem, int nImage, int nSelectedImage ) 用于得到/修改某结点所使用图标索引; ·CString GetItemText( HTREEITEM hItem ) /BOOL SetItemText( HTREEITEM hItem, LPCTSTR lpszItem ) 用于得到/修改某一结点的显示字符; ·BOOL DeleteItem( HTREEITEM hItem )用于删除某一结点,BOOL DeleteAllItems( )将删除所有结点。 此外如果想遍历树可以使用下面的函数: ·HTREEITEM GetRootItem( )得到根结点; ·HTREEITEM GetChildItem( HTREEITEM hItem )得到酒结点; ·HTREEITEM GetPrevSiblingItem/GetNextSiblingItem( HTREEITEM hItem ) 得到指明结点的上/下一个兄弟结点; ·HTREEITEM GetParentItem( HTREEITEM hItem )得到父结点。 树形控件的消息映射使用ON_NOTIFY宏,形式如同: ON_NOTIFY( wNotifyCode, id, memberFxn ),wNotifyCode为通知代码,id为产生该消息的窗口ID, memberFxn为处理函数,函数的原型如同void OnXXXTree(NMHDR* pNMHDR,LRESULT* pResult), 其中pNMHDR为一数据结构,在具体使用时需要转换成其他类型的结构。对于树形控件可能取值和对应的数据结构为: ·TVN_SELCHANGED 在所选中的结点发生改变后发送,所用结构:NMTREEVIEW; ·TVN_ITEMEXPANDED 在某结点被展开后发送,所用结构:NMTREEVIEW; ·TVN_BEGINLABELEDIT 在开始编辑结点字符时发送,所用结构:NMTVDISPINFO; ·TVN_ENDLABELEDIT 在结束编辑结点字符时发送,所用结构:NMTVDISPINFO; ·TVN_GETDISPINFO 在需要得到某结点信息时发送,(如得到结点的显示字符)所用结构:NMTVDISPINFO; (e) 日期控件:COleDateTime, GetCurrentTime( ); 获得当前时间; int SetDateTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec ); 设置日期和时间 int SetDate( int nYear, int nMonth, int nDay ); 设置日期 int SetTime( int nHour, int nMin, int nSec ); 设置时间 CString Format( LPCTSTR lpszFormat ) const; 把日期时间格式化到字符串中 形式有: %H: 小时 %M: 分钟 %S: 秒 %Y: 年 %m: 月 %d: 日 Get之类的函数就不介绍了.比较简单,看看msdn就行了. msdn:上的完整说明: %a Abbreviated weekday name %A Full weekday name %b Abbreviated month name %B Full month name %c Date and time representation appropriate for locale %d Day of month as decimal number (01 – 31) %H Hour in 24-hour format (00 – 23) %I Hour in 12-hour format (01 – 12) %j Day of year as decimal number (001 – 366) %m Month as decimal number (01 – 12) %M Minute as decimal number (00 – 59) %p Current locale’s A.M./P.M. indicator for 12-hour clock %S Second as decimal number (00 – 59) %U Week of year as decimal number, with Sunday as first day of week (00 – 53) %w Weekday as decimal number (0 – 6; Sunday is 0) %W Week of year as decimal number, with Monday as first day of week (00 – 53) %x Date representation for current locale %X Time representation for current locale %y Year without century, as decimal number (00 – 99) %Y Year with century, as decimal number %z, %Z Time-zone name or abbreviation; no characters if time zone is unknown %% Percent sign 在这里还会涉及把字符串转换成时间格式,可以这样做: CTime m_StartTime1 = CTime::GetCurrentTime(); CString csStartTime = m_StartTime1.Format( '%Y%m%d%H%M%S' ); 使用sprintf及sscanf函数进行CString与CTime之间的转换 一.将CString转为CTime的几种方法 CString timestr = '2000年04月05日'; int a,b,c ; sscanf(timestr.GetBuffer(timestr.GetLength()),'%d年%d月%d日',&a,&b,&c); CTime time(a,b,c,0,0,0); CString s('2001-8-29 19:06:23'); int nYear,nMonth, nDate, nHour,nMin,nSec; sscanf(s,'%d-%d-%d %d:%d:%d', &nYear, &nMonth, &nDate, &nHour, &nMin,&nSec); CTime t(nYear, nMonth ,nDate, nHour, nMin, nSec); 二.将CTIme转换为CString的方法: CTime tmSCan = CTime::GetCurrentTime(); CString szTime = tmScan.Format(''%Y-%m-%d %H:%M:%S''); 这样得到的日期时间字符串就是以'2006-11-27 23:30:59'的格式.这是不是很方便呢? //取得CTime中的日期 CString cstrDate = tmScan.Format('%Y-%m-%d'); //取得CTime中的时间 CString cstrTime = tmScan.Format('%H:%M-%S'); |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "凌风微型文章系统",针对"搜索引擎"完美设计,提高"搜索引擎"对网站容量,质量的评估值,"扁平化,转静态 ..." |