2Windows程序设计

编程

  Unicode字符集和ASCII码字符集

    

 

              

 

 

    下面是代码示例: ASCII码字符集      Unicode字符集     通用版本字符集

       程序1

#include <stdio.h>

#include <stdlib.h>

#include <wchar.h>

#include <locale.h>

#include <tchar.h>

/* ASCII码字符集 双字节字符集 多字节字符集 */

//int main()

//{

// char c = "A"; //char是一个字节

// char *str = "日本"; //不推荐使用,容易发生乱码,实际上还是ASCII字符

// int i;

// i = strlen(str);

// printf("%c

", c);

// printf("%s

", str);

// printf("%d

", i);

// return 0;

//}

/* Unicode宽字符集 */

//int main()

//{

// wchar_t c = L"中"; //宽字符,Unicode,两个字节

// wchar_t str[] =L"中国";

// int i;

// setlocale(LC_ALL,"chs"); //若是Unicode必须设置本地区域语言中文

// i = wcslen(str);

// wprintf(L"%lc

", c);

// wprintf(L"%ls

", str);

// wprintf(L"%d

", i);

//}

//通用的类型、函数

int main()

{

//char c;

//wchar_t c;

//CHAR c;

//WCHAR c;

TCHAR str[] = _T("印度");

//setlocale(LC_ALL, "chs"); //若是Unicode字符集必须设置本地区域语言中文

_tprintf(_TEXT("%s

"), str);

return0;

}

    

    程序2  windows 通用函数

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInsance,

PSTR szCmdLine, int iCmdShow)

{

TCHAR *content= TEXT("hello 通用 中国 tchar");

TCHAR *title = TEXT("标题 通用 中国 tchar");

MessageBoxA(NULL, "hello ASCII 中国", "ASCII 标题", MB_YESNO | MB_ICONINFORMATION);

MessageBoxW(NULL, L"hello Unicode 中国", L"Unicode 标题", MB_YESNO | MB_ICONINFORMATION);

MessageBox(NULL, TEXT("hello 通用 中国"), TEXT("通用 标题"), MB_YESNO | MB_ICONINFORMATION);

MessageBox(NULL, content, title, MB_YESNO | MB_ICONINFORMATION);

}

                  

 

                  

 

     程序3 C语言标准函数

#include <stdio.h>

#include <stdarg.h>

int my_printf(constchar *szFormat, ...)

{

int iReturn;

va_list pArgs; // 头文件定义 typedef char* va_list;

va_start(pArgs, szFormat); //指向 szFormat 的下一个参数

//返回值 传入的元素的个数

iReturn = vprintf(szFormat, pArgs); //pArgs 指向数组的第一个指针

va_end(pArgs);

return iReturn;

}

//标准的C

int main()

{

int i = 1;

char szBuffer[100];

int x=100, y=200, z=300;

//会调用vprintf

printf("hello = %d,%d,%d

", x, y, z); //传入的参数是灵活多变的,上面的函数模仿

my_printf("%d,%d

", x, y);

sprintf(szBuffer, "不安全的Hello %d

", i); //如果存的值很大就会占用后面的内存区

printf(szBuffer);

_snprintf(szBuffer, 100, "安全的Hello %d

", i); //截取到50后就不在使用

puts(szBuffer);

printf("hello %d

", i);

return0;

}

   

 

    程序4 windows函数

#include <windows.h>

#include <stdio.h>

#include <tchar.h>

#include <locale.h>

//最后一个程序 使用 Unicode 字符集 显示乱码,未找到原因。

//ASCII字符集 版本

//int WINAPI WinMain(HINSTANCE hInstance,

// HINSTANCE hPrevInstance,

// PSTR szCmdLine,

// int iCmdShow

// )

//{

// int i = 5;

// char szBuffer[50];

//

////sprintf(szBuffer, "Hello %d

", i); //不安全标准的C语言函数,无法处理Unicode字符集

// _snprintf(szBuffer,50, "安全的:Hello %d

", i); //安全标准的C语言函数,无法处理Unicode字符集

//

// MessageBoxA(NULL, szBuffer, "ASCII版本", MB_YESNO | MB_ICONINFORMATION);

// return 0;

//}

//Unicode字符集 版本

//int WINAPI WinMain(HINSTANCE hInstance,

// HINSTANCE hPrevInstance,

// PSTR szCmdLine,

// int iCmdShow

// )

//{

// int i = 5;

// wchar_t szBuffer[50]; //WCHAR

//

////swprintf(szBuffer,50, L"Hello %d

", i); //不安全

// _snwprintf(szBuffer, 50, L"安全的:Hello %d

", i); //安全的

//

// MessageBoxW(NULL, szBuffer, L"Unicode版本", MB_YESNO | MB_ICONINFORMATION);

// return 0;

//}

//通用 版本

//int WINAPI WinMain(HINSTANCE hInstance,

// HINSTANCE hPrevInstance,

// PSTR szCmdLine,

// int iCmdShow

// )

//{

// int i = 5;

// TCHAR szBuffer[50];

//

//// _stprintf(szBuffer, TEXT("Hello %d

"), i);

// _sntprintf(szBuffer,50, TEXT("安全的:Hello %d

"), i); //安全的

//

// MessageBox(NULL, szBuffer, TEXT("通用版本"), MB_YESNO | MB_ICONINFORMATION);

// return 0;

//}

int CDECL MessageBoxPrintf(TCHAR *szCaption,TCHAR *szFormat,...)

{

TCHAR szBuffer[1024]; //定义字符数组

va_list pArgList;

va_start(pArgList, szFormat);

//把szFormat放在szBuffer字符数组中

_vsnprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), szFormat, pArgList);

va_end(pArgList);

return MessageBox(NULL, szBuffer, szCaption,MB_YESNO | MB_ICONINFORMATION);

}

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

PSTR szCmdLine,

int iCmdShow

)

{

int x = 101,y = 201,z = 301;

int cxScreen, cyScreen;

cxScreen = GetSystemMetrics(SM_CXSCREEN); //获取电脑屏幕宽度

cyScreen = GetSystemMetrics(SM_CYSCREEN); //获取电脑屏幕高度

MessageBoxPrintf(TEXT("标题"), TEXT("Hello %d,%d,%d

"), x,y,z);

MessageBoxPrintf(TEXT("我的屏幕"), TEXT("屏幕宽度:%dpx,高度:%dpx"), cxScreen, cyScreen);

return0;

}

 

以上是 2Windows程序设计 的全部内容, 来源链接: utcz.com/z/520057.html

回到顶部