Archive for 12 月, 2010

Ansi2Unicode Unicode2Ansi

星期五, 10 12 月, 2010

//
// Function:
//  将Ansi字符串转换为Unicode字符串
//
PCWSTR Ansi2Unicode(PCSTR pMultiByteStr)
{
 int nLenOfWideCharStr = MultiByteToWideChar(CP_ACP, 0, pMultiByteStr, -1, NULL, 0);
 PWSTR pWideCharStr = (PWSTR)malloc(nLenOfWideCharStr * sizeof(wchar_t));
 if(pWideCharStr)
 {
  MultiByteToWideChar(CP_ACP, 0, pMultiByteStr, -1, pWideCharStr, nLenOfWideCharStr);
 }
 return pWideCharStr;
}

// 调用方法
   const char *pMultiByteStr = “中文”;
   const wchar_t *pWideCharStr = Ansi2Unicode(pMultiByteStr);
   if(pWideCharStr)
   {
    MessageBox(hWnd, pWideCharStr, TEXT(“Ansi2Unicode”), MB_OK);
    free((void *)pWideCharStr);
    pWideCharStr = NULL;
   }

(更多…)

GetMessageText

星期四, 9 12 月, 2010

//
// Function:
//  根据dwMessageId从系统消息表中获取对应的消息文本保存在hlocal中
//
BOOL GetMessageText(HLOCAL& hlocal, DWORD dwMessageId)
{
 return FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER,// 标识组合位
  NULL,// 模块
  dwMessageId,// 消息码
  MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),// 语言标识
  (PTSTR)&hlocal,// 缓冲区
  0,// 字符数
  NULL);// 参数列表
}

// 调用方法
   HLOCAL hlocal = NULL;
   if(GetMessageText(hlocal, 2))
   {
    MessageBox(hWnd, (PCTSTR)LocalLock(hlocal), TEXT(“MessageText”), MB_OK);
    LocalFree(hlocal);
   }