#author("2024-02-03T10:11:06+00:00","default:iseki","iseki")
#author("2024-02-03T10:11:27+00:00","default:iseki","iseki")
** VC++ (Unicodeよ.勘弁してくれ!)
- [[Visual Studio 一般>Visual Studio]]
*** sjis -> unicode
- 構成プロパティ - 詳細 - 文字コード - ''Unicode'' 文字セットを使用する(マルチバイトから変更)
- 構成プロパティ - C/C++ - すぺてのオプション - その他のオプション - ''/utf-8'' を追加
- リソースファイルの ''#pragma code_page(932)'' を ''#pragma code_page(65001)'' に変更.
-- その他の ''932'' も ''65001'' に.

*** コンパイラ
- ''_UNICODE'' を定義する
*** MFC ライブラリ
- ''nafxcw.lib'': Release version
- ''nafxcwd.lib'': Debug version (default)
- ''uafxcw.lib'': Release version with Unicode support
- ''uafxcwd.lib'': UAFXCWD.LIB Debug version with Unicode support 

- マルチバイトでコンパイルしたものと,uicodeでコンパイルしたものをリンクさせると,nafxcw と uafxcw の競合エラーの嵐が起こる.
 uafxcwd.lib(barcore.obj) : error LNK2005: "public: void __thiscall CControlBar::OnDestroy(void)" (?OnDestroy@CControlBar@@QAEXXZ) は既に nafxcwd.lib(barcore.obj) で定義されています。
*** 文字コード変換
**** いろいろ面倒(何が何だか さっぱりさっぱり)
- キャストはできる限りやらないほうが良い気がする.
- char[] から LPWSTR に変換できません  : (LPWSTR)char[]
- char[] から LPCTSTR へ変換できません : (LPCTSTR)char[]
- LPCSTR から LPCWSTR に変換できません : (LPCWSTR)char[]
- const char[] から wchar_t に変換できません : _T(const char[])) or TEXT(const char[])
- CString から LPCSTR に変換できません : jbxwl::ts2mbs(CString)

- https://untitled-note.com/vcpp-cstring-convert/

**** 変換関数
- str.GetString()

<pre>
CString str; 
char_t* char = str.GetString();

CStringW wstr; 
wchar_t* char = wstr.GetString();
</pre>

- [[JunkBox_Win_Lib/WinBaseLib/WinTools.h>https://github.com/JunkBox-Library/JunkBox_Win_Lib/blob/main/WinBaseLib/WinTools.h]]
-- jbxwl::mbs2ts(char* str) : 文字列 str から CString を返す.
-- jbxwl::ts2mbs(LPCTSTR str) : CString から 文字列を返す.要 free()

<pre>
Buffer  tc2Buffer(TCHAR*  tchar, int size=-1);
Buffer  ts2Buffer(LPCTSTR str,   int size=-1);

CString      mbs2ts(char*   str);
inline char* ts2mbs(LPCTSTR str)  // 要 free. NULL は絶対に返ってこない
{
    Buffer buf = ts2Buffer(str);
    return (char*)buf.buf;
}
//
int     copy_ts2Buffer(LPCTSTR str, Buffer* buf);
int     cat_ts2Buffer (LPCTSTR str, Buffer* buf);
</pre>

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS