欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

windows程序设计——开始、Unicode 简介

程序员文章站 2024-03-12 12:38:08
...

大师的书真是太啰嗦了,我认为直接给代码和注释,是更高效率的方法(依然用的vc6)。

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ;

     return 0 ;
}
windows.h头文件主要包含了windows编程中所需要的其他文件,一般包含了这个头文件之后就能使用系统的大部分API了。

WinMain主函数,编译器规定的入口函数,这么没什么好说的,这个是规定的,而return 0代表程序正常结束。

MessageBox( //弹出对话框
    HWND hWnd , //窗口句柄
    LPCWSTR lpText, // 消息内容
    LPCWSTR lpCaption, //对话框标题
    UINT uType); //
uType指示图标和按钮风格使用 | 组合:

按钮风格
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
图标风格
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
返回值IDOK、IDYES、IDNO、IDCANCEL、IDABORT、 IDRETRY 或IDIGNORE代表按下了哪个按钮关闭对话框。

以上的MessageBox函数其实是个宏,在Unicode工程环境下为MessageBoxW,非Unicode的情况下为MessageBoxA。这是处理不同的参数类型而定义的两个函数,但是功能和使用方法完全一致,为了减轻记忆负担而使用宏定义的方式统一到MessageBox中。为了能处理普通字符一样来处理Unicode字符,微软定义了许多宏。以语法糖的方式使得工程环境迁移到Unicode环境中的时候无需修改代码。

处理类型
typedef char CHAR ;
typedef wchar_t WCHAR ; // wc
typedef CHAR * PCHAR, * LPCH, * PCH, * NPSTR, * LPSTR, * PSTR ;
typedef CONST CHAR * LPCCH, * PCCH, * LPCSTR, * PCSTR ;
typedef WCHAR * PWCHAR, * LPWCH, * PWCH, * NWPSTR, * LPWSTR, * PWSTR ;
typedef CONST WCHAR * LPCWCH, * PCWCH, * LPCWSTR, * PCWSTR ;

#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
处理API
WINUSERAPI int WINAPI MessageBoxA ( HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
WINUSERAPI int WINAPI MessageBoxW (HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif
处理字符处理函数:

windows程序设计——开始、Unicode 简介