紫影龙的编程日记—— MFC中的常用函数

今天学习的内容是MFC中比较常用的一些函数

IsEmpty() 

该函数判断一个对象是否为空,返回布尔值. 

表达式 IsEmpty(expression)

例子:

CString Sample(CString Text)

{  

return Text.IsEmpty() ? TRUE : FALSE;

}


GetAt  

函数原型:TCHAR GetAt( int nIndex ) const;  

函数返回值:字符中第nIndex个字符(从0开始).  

Header: atlcoll.h  

注意:nIndex的最大值可由GetUpperBound()得到。若nIndex小于0或大于最大值,将返回错误。


isdigit  

原型:extern int isdigit(char c);   

用法:#include <ctype.h>   

功能:判断字符c是否为数字  

说明:当c为数字0-9时,返回非零值,否则返回零。  

附加说明 此为宏定义,非真正函数。


4.isalnum  

原型:extern int isalnum(int c);   

用法:#include <ctype.h>   

功能:判断字符变量c是否为字母或数字  

说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。


isalpha  

原型:int isalpha(int ch)   

用法:头文件加入#include<cctype>(旧版本的编译器使用<ctype.h>)  

功能:判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,在标准c中相当于使用“isupper(ch)||islower(ch)”做测试,返回非零值,否则返回零。


isupper  

原型:extern int isupper(int c);   

头文件:<cctype>(旧版本的编译器使用<ctype.h>)  

功能:判断字符c是否为大写英文字母  

说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。  

附加说明: 此为宏定义,非真正函数。


islower  

islower(测试字符是否为小写字母)  

相关函数  isalpha,isupper  

表头文件  #include<cctype>(旧版本的编译器使用<ctype.h>)


int islower(int c)   

函数说明  

检查参数c是否为小写英文字母。  

返回值 若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。  

附加说明:此为宏定义,非真正函数。


TCHAR

因为C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串字符串处理函数,比如:strlen和wstrlen,分别用于处理两种字符串  

微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T("")这样的字符串,对应的就有了_tcslen这样的函数 

 

为了存储这样的通用字符,就有了TCHAR:  

当没有定义_UNICODE宏时,TCHAR = char,_tcslen = strlen  

当定义了_UNICODE宏时,TCHAR = wchar_t , _tcslen = wstrlen  

当我们定义了UNICODE宏,就相当于告诉了编译器:我准备采用UNICODE版本。这个时候,TCHAR就会摇身一变,变成了wchar_t。而未定义UNICODE宏时,TCHAR摇身一变,变成了unsigned char 。这样就可以很好的切换宽窄字符集。 tchar可用于双字节字符串,使程序可以用于中日韩等国 语言文字处理、显示。使编程方法简化。


GetText函数  

返回数据窗口控件中 悬浮在当前行列之上的编辑框中的文本。在用户修改数据窗口中某项的值时,实际上首先在悬浮 在当前项上的编辑框中进行修改 , 当用户移动输入焦点或程序中使用 AcceptText()函数接收用户输入时,用户修改的数据通过有效性规则验证后放入数据窗口的主缓冲区中。 


语法:  

dwcontrol.GetText( ) 参数:  

dwcontrol 数据窗口控件名 返回值:  

String 函数执行成功时返回悬浮在数据窗口dwcontrol 当前行列之上的编辑框中的文本,该文本值或许能、或许不能通过各种有效性检查,即或许可以接收为当前项的值,或许不能接收。如果数据窗口中没有当前项,则GetText()函数返回空字符串 "" ,如果dwcontrol 的值为NULL ,则GetText()函数返回NULL。 


用法:  

显示在数据窗口中的各个数据项的值保存在数据窗口的主缓冲区中。当用户编辑某项的值时,系统自动把该值传送到 漂浮 在该项之上的编辑框中,供用户进行修改。当用户移动输入焦点或程序中使用 AcceptText()函数接收用户输入后 用户修改的数据通过有效性规则验证时放入数据窗口的主缓冲区中。  

在数据窗口控件的ItemChanged 或ItemError 事件中不需要调用GetText()函数来得到编辑框中用户输入或修改的内容 ,此时,可以使用这些事件的data 参数得到该内容;要得到数据窗口缓冲区中某项的值 , 使用与相应列的数据类型相匹配的 GetItem 系列函数 。



SetWindowText  

函数功能:该函数改变指定窗口的标题栏的文本内容(如果窗口有标题栏)。如果指定窗口是一个控件,则改变控件的文本内容。然而,SetWindowText函数不改变其他应用程序中的控件的文本内容。  

函数原型:BOOL SetWindowText(HWND hwnd,LPCTSTR lpString);   

参数:  

hWnd:要改变文本内容的窗口或控件的句柄。  

lpString:指向一个空结束的字符串的指针,该字符串将作为窗口或控件的新文本。  

返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。备注:如果目标窗口属于当前进程,SetWindowText函数会使WM_SETTEXT消息发送给指定的窗口或控件。然而,如果控件是以WS_CAPTION风格创建的列表框控件,SetWindowText函数将为控件设置文本,而不是为列表项设置文本。


进度条颜色设置 

m_Progress1.SendMessage(PBM_SETBKCOLOR, 0, RGB(0, 0, 255));//背景色为蓝色 m_Progress1.SendMessage(PBM_SETBARCOLOR, 0, RGB(255, 0, 0));//前景色为红色


Format函数详解函数声明  

function Format(const Format: string; const Args: array of const): string; overload;   


函数功能  

事实上Format方法有两种形式,另外一种是三个参数的,主要区别在于它是线程安全的, 但并不多用,所以这里只对第一个介绍。  

Format参数是一个格式字符串,用于格式化Args里面的值的。Args是一个变体数组,即它里面可以有多个参数,而且每个参数可以不同。 

 

函数参数  

[type]  

type 参数可选的类型有d,u,f,e,g,n,m,p,s,x.     

1) d 十进制数,表示一个整型值,u 和d一样是整型值,但它是无符号的,而如果它对应的值是负的,则返回时是一个2的32次方减去这个负数的绝对值 。   

例如:Format("this is %u",-2);   

返回的是:this is 4294967294 

    

2)f 对应浮点数   

3)e科学表示法,对应整型数和浮点数  

例如:Format("this is %e",-2.22);   

返回的是:this is -2.220000E+000     


4)g 这个只能对应浮点型,且它会将值中多余的数去掉   

例如:Format("this is %g",02.200);   

返回的是:this is 2.2     


5)n 只能对应浮点型,将值转化为号码的形式,看一个例子就明白了  

例如:Format("this is %n",4552.2176);   

返回的是:this is 4,552.22   

注意:(1)只表示到小数后两位    

(2)即使小数没有被截断,它也不会也像整数部分一样有逗号来分开的    


6)m 钱币类型,但关于货币类型有更好的格式化方法,这里只是简单的格式化,另外它只对应于浮点值   

例如:Format("this is %m",9552.21);   

返回的是:this is ¥9,552.21     


7)p 对应于指针类型,返回的值是指针的地址,以十六进制的形式来表示   

例如: Format("this is %p",p);   

返回的是:this is 0012F548     


8)s 对应字符串类型   

9)x 必须是一个整形值,以十六进制的形式返回  

例如:Format("this is %X",15);  

返回的是:this is F



AfxMessageBox函数原型  

int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );  

int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) –1 );   


在第一种形式中,lpszText表示在消息框内部显示的文本,消息框的标题为应用程序的可执行文件名(如Hello)。在第二种形式中,nIDPrompt为要显示的文本字符串在字符串表中的ID。函数调用时会自动从字符串表中载入字符串并显示在消息框中。nType为消息框中显示的按钮风格和图标风格的组合,可以采用|(或)操作符组合各种风格。  


按钮风格  

MB_ABORTRETRYIGNORE 消息框中显示Abort、Retry、Ignore按钮  

MB_OK 显示OK按钮  

MB_OKCANCEL 显示OK、Cancel按钮  

MB_RETRYCANCEL 显示Retry、Cancel按钮  

MB_YESNO 显示Yes、No按钮  

MB_YESNOCANCEL 示Yes、No、Cancel按钮  


图标风格  

MB_ICONINFORMATION 显示一个i图标,表示提示  

MB_ICONEXCLAMATION 显示一个惊叹号,表示警告  

MB_ICONSTOP 显示手形图标,表示警告或严重错误  

MB_ICONQUESTION 显示问号图标,表示疑问  


使用时,可以只调用AfxMessageBox(LPCTSTR lpszText);这样默认风格为AfxMessageBox(LPCTSTR lpszText,MB_OK|MB_ICONEXCLAMATION ); 


AfxMessageBox()与MessageBox()的区别  

与AfxMessageBox类似的函数MessageBox,它是CWnd的类成员函数:  

int MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption = NULL,UINT nType = MB_OK );   


两个函数的区别:AfxMessageBox比MessageBox简单一些,因为它是一个全局函数所以不需要对应的一个窗口类,但是不能控制消息框标题,常用于调试程序时的内部数据输出或警告;MessageBox比较正式,常用在要提交的应用程序版本中,可以控制标题内容而不必采用含义不明的可执行文件名为标题。  


举例:  

AfxMessageBox("Are you sure?",MB_YESNO|MB_ICONQUESTION);  

int a = MessageBox(TEXT("是否确认删除?"),TEXT("Warning!!"),4);  

if(a==6)  A

fxMessageBox("Yes");  

else  

AfxMessageBox("No");  

(其中#define IDYES 6 #define IDNO 7)  


主要区别:  

1.MessageBox 如果在非CWnd类中使用则是API函数,使用起来非常不便,必须指定标题和样式

否则使用CWnd类的函数,只需一个内容参数就可以了,AfxMessageBox和CWnd类成员函数类似,使用起来很方便,因为是Afx 基于框架的函数  


2.MessageBox是模态对话框,你不进行确认时程序不往下运行,它会阻塞你当前的线程为,除非你程序是多线程的程序,否则只有等待模态对话框被确认  


3、如果用MFC的话,请尽量使用afxmessagebox,因为这个全局的对话框最安全,也最方便。  但是在WIN32 SDK的情况下只能使用MESSAGEBOX。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值