windows下unicode传参及CString解惑 及环境变量设置
来源:互联网 发布:图腾9u网络机柜 编辑:程序博客网 时间:2024/06/18 13:59
char test[] = "本地编码字符串";wchar_t test2[] = L"UNICODE宽字符编码";CString testStr = CString(test);CString testStr2 = CString(test2);CString testStr3 = CString((unsigned char*)test2);
1.unicode传递参数给空项目的int main (int, char**), 程序收到的参数是经过windows编码转换的本地编码char*
2.CString的构造函数可以传递wchar*和unsigned char*,当传入wchar*时构造函数会按照unicode处理是肯定的,当传入unsigned char*时构造函数按照本地多字节编码来解释
至于内部的tchar结构把数据存成wchar_t还是char就根据是否宏定义了UNICODE来决定了
http://msdn.microsoft.com/en-us/library/aa314317%28v=VS.60%29.aspx
3.CString可以直接传递给const char* 或 const wchar_t*类型的函数参数,没定义UNICODE就可以直接传递给前者,定义了就可以直接传递给后者。当然了,如果是TCHAR*类型的参数可以随意传
增加环境变量(比如往PATH中加入可执行文件的路径,另,CreateProcess时候不特别指明时子进程继承父进程的环境变量)
bool AddEnviroment(const CString& varName, const CString& newValue){DWORD bufferLen = 4096;LPTSTR pszOldVal = (LPTSTR) malloc(bufferLen*sizeof(TCHAR));if(NULL == pszOldVal)return false;DWORD dwRet = GetEnvironmentVariable(varName, pszOldVal, bufferLen);if(0 == dwRet) {free(pszOldVal);return false;}else if(bufferLen < dwRet){pszOldVal = (LPTSTR) realloc(pszOldVal, dwRet*sizeof(TCHAR)); if(NULL == pszOldVal) {free(pszOldVal);return false;}dwRet = GetEnvironmentVariable(varName, pszOldVal, dwRet);if(!dwRet) {free(pszOldVal);return false;}}CString oldVal(pszOldVal);free(pszOldVal);if (oldVal.Find(newValue) == -1) {oldVal += TEXT(";") + newValue;if ( !SetEnvironmentVariable(varName, oldVal) )return false;}return true;}
获取当前启动程序的路径
bool GetExePath(CString& path){path.Truncate(0);DWORD bufferLen = MAX_PATH;TCHAR* buffer = new TCHAR[bufferLen];while (true) {DWORD lenRt = GetModuleFileName(NULL, buffer, bufferLen-1);if (lenRt == 0) { //errorreturn false;}else {if (lenRt == bufferLen-1) {delete[] buffer;bufferLen = bufferLen + bufferLen/2;buffer = new TCHAR[bufferLen];continue;}else {buffer[lenRt] = _T('\0');break;}}}path = CString(buffer);path = path.Left(path.ReverseFind('\\')+1);return true;}
获取当前目录
bool GetCurentDir(CString& path){TCHAR dirBuffer[MAX_PATH];DWORD dwRet = GetCurrentDirectory(MAX_PATH, dirBuffer);if( dwRet == 0 ){return false;}if(dwRet > MAX_PATH-1){TCHAR* newBuffer = (TCHAR*)malloc(sizeof(TCHAR)*dwRet);DWORD rt = GetCurrentDirectory(dwRet, newBuffer);if (rt == 0) {free(newBuffer);return false;}assert(rt==dwRet-1);path = CString(newBuffer);free(newBuffer);return true;} else {path = CString(dirBuffer);return true;}}
- windows下unicode传参及CString解惑 及环境变量设置
- windows下安装JDK及环境变量设置
- MFC,unicode下CString类型及UTF8问题
- unicode下CString提取判断中文。英文字符。及数字
- 环境变量设置及DOS下执行
- windows下安装jdk及配置环境变量
- assii与unicode及CString的用法
- windows 下设置环境变量
- Windows下环境变量设置
- C++ Cstring 转 const * char (Unicode 及非Unicode)
- C++ Cstring 转 const * char (Unicode 及非Unicode)
- 【MongoDB】设置环境变量及配置成Windows服务
- linux下安装JDE及设置JAVA_HOME环境变量
- linux环境下JDK安装及环境变量设置
- 在linux下设置环境变量 及 配置mount
- Linux下Qt 安装及环境变量设置(Ubuntu 10.04)
- Linux下Qt 、Sqlite安装及环境变量设置(Ubuntu 10.04)
- Linux下Qt 安装及环境变量设置(Ubuntu 10.04)
- 2012数据库架构规划
- av_find_stream_info || av_estimate_timings
- php通过COM类调用组件
- Weka --- 关联规则挖掘
- 常见密码的修改方法收集
- windows下unicode传参及CString解惑 及环境变量设置
- win7 mysql 应用程序无法启动因为应用程序的并行配置不正确
- SQL Server Express 简介
- Darwing Streaming Server的安装
- 初始化下拉框
- linux磁盘使用查看命令
- android 状态栏添加图标的函数
- Flex页面打印(打印可显示组建--UIComponent)
- java语法二