MFC 窗体按钮的按键的实现和字符串的相关处理函数的问题
来源:互联网 发布:js判断radio选中 编辑:程序博客网 时间:2024/06/10 00:11
Windows表头文件类型
正如您在第一章所看到的那样,一个Windows程序包括表头文件WINDOWS.H。该文件包括许多其它表头文件,包括WINDEF.H,该文件中有许多在Windows中使用的基本型态定义,而且它本身也包括WINNT.H。WINNT.H处理基本的Unicode支持。
WINNT.H的前面包含C的表头文件CTYPE.H,这是C的众多表头文件之一,包括wchar_t的定义。WINNT.H定义了新的数据型态,称作CHAR和WCHAR:
typedef char CHAR ; typedef wchar_t WCHAR ; // wc
当您需要定义8位字符或者16位字符时,推荐您在Windows程序中使用的数据型态是CHAR和WCHAR。WCHAR定义后面的注释是匈牙利标记法的建议:一个基于WCHAR数据型态的变量可在前面附加上字母wc以说明一个宽字符。
WINNT.H表头文件进而定义了可用做8位字符串指针的六种数据型态和四个可用做const8位字符串指针的数据型态。这里精选了表头文件中一些实用的说明数据型态语句:
typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ; typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;
前缀N和L表示「near」和「long」,指的是16位Windows中两种大小不同的指标。在Win32中near和long指标没有区别。
类似地,WINNT.H定义了六种可作为16位字符串指针的数据型态和四种可作为const 16位字符串指针的数据型态:
typedef WCHAR * PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ; typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, * PCWSTR ;
至此,我们有了数据型态CHAR(一个8位的char)和WCHAR(一个16位的wchar_t),以及指向CHAR和WCHAR的指标。与TCHAR.H一样,WINNT.H将TCHAR定义为一般的字符类型。如果定义了标识符UNICODE(没有底线),则TCHAR和指向TCHAR的指标就分别定义为WCHAR和指向WCHAR的指标;如果没有定义标识符UNICODE,则TCHAR和指向TCHAR的指标就分别定义为char和指向char的指标:
#ifdef UNICODE typedef WCHAR TCHAR, * PTCHAR ; typedef LPWSTR LPTCH, PTCH, PTSTR, LPTSTR ; typedef LPCWSTR LPCTSTR ; #else typedef char TCHAR, * PTCHAR ; typedef LPSTR LPTCH, PTCH, PTSTR, LPTSTR ; typedef LPCSTR LPCTSTR ; #endif
如果已经在某个表头文件或者其它表头文件中定义了TCHAR数据型态,那么WINNT.H和WCHAR.H表头文件都能防止其重复定义。不过,无论何时在程序中使用其它表头文件时,都应在所有其它表头文件之前包含WINDOWS.H。
WINNT.H表头文件还定义了一个宏,该宏将L添加到字符串的第一个引号前。如果定义了UNICODE标识符,则一个称作__TEXT的宏定义如下:
#define __TEXT(quote) L##quote
如果没有定义标识符UNICODE,则像这样定义__TEXT宏:
#define __TEXT(quote) quote
此外, TEXT宏可这样定义:
#define TEXT(quote) __TEXT(quote)
这与TCHAR.H中定义_TEXT宏的方法一样,只是不必操心底线。我将在本书中使用这个宏的TEXT版本。
这些定义可使您在同一程序中混合使用ASCII和Unicode字符串,或者编写一个可被ASCII或Unicode编译的程序。如果您希望明确定义8位字符变量和字符串,请使用CHAR、PCHAR(或者其它),以及带引号的字符串。为明确地使用16位字符变量和字符串,请使用WCHAR、PWCHAR,并将L添加到引号前面。对于是8位还是16位取决于UNICODE标识符的定义的变量或字符串,要使用TCHAR、PTCHAR和TEXT宏。
- MFC 窗体按钮的按键的实现和字符串的相关处理函数的问题
- MFC对消息处理的相关函数
- MFC 窗口按钮的鼠标事件(对于中文和英文按钮的处理)问题
- 字符串相关函数的实现
- MFC 椭圆窗体的实现
- 字符串处理函数的实现
- 字符串处理函数的实现
- 字符串处理函数的实现
- 改变MFC按钮的颜色和字体大小的处理
- MFC TRIM函数字符串的修剪问题
- MFC 查找字符串函数的实现
- MFC内单选按钮的实现
- MFC自定义按钮的实现
- mfc关于CButtonST按钮设置不可用时 EnableWindow(FALSE) 按键图标的问题
- MFC 的默认按键
- MFC用代码实现屏蔽ESC和Enter键按下,对话框窗体关闭或者消失的问题
- 字符串的相关函数
- 字符串的相关函数
- MFC 启动外部进程的问题
- MFC 程序自启动外部程序的问题
- MFC 操作注册表的问题
- MFC 进程和新进程主窗口特性问题
- MFC 注册表启动程序问题
- MFC 窗体按钮的按键的实现和字符串的相关处理函数的问题
- 钗黛双收:若你也同Vim难割舍,却又看Emacs情切切
- 嵌入式 SVN配置问题
- MFC 原以为很神奇的提示窗体…
- MFC 增加工具条类的问题
- MFC 窗体控件选择的问题
- Oracle RAC expdp 错误一例 ORA-29913: error in executing ODCIEXTTABLEPOPULATE callout
- MFC 对于使用自己的线进行启动其他进程的虚拟地址映射问题
- MFC 静态变量的问题以及LISTBOX在别的类中写入LISTBOX的问题