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