- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MFC:リッチエディットからUnicode文字列を受け取りたい)
MFCでリッチエディットからUnicode文字列を受け取る方法
このQ&Aのポイント
- MFCのダイアログベースでプロジェクトを作成し、Unicode文字セットを使用する設定を行います。
- リッチエディット2.0にUnicode文字を入力しても文字化けする問題が発生し、正常に受け取る方法を探しています。
- エディットボックスではUnicode文字を受け取ることができるが、リッチエディット2.0では文字化けが発生します。解決方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#75489
回答No.1
関連するQ&A
このQ&Aのポイント
- VKL41/X-Bはノートパソコンで、接続方法はUSBtypeCです。
- お困りごとは、VKL41/X-BがDisplayPort Alt Modeに対応しているかどうかです。
- NEC 121wareの「パソコン本体」についての質問です。
お礼
ご回答ありがとうございます。また、お礼が遅れて申し訳ありません。 実は自己解決していたのですが、回答者がいない状態では質問を締め切れず、また「自分と同じ悩みを抱えた人がいるかもしれない」という思いから、記事を削除することもできず、半放置状態でした。 以下の方法で解決しました。 //----------------ダイアログの.cppに追加 void AFXAPI CMainDlg::DDX_TextUni(CDataExchange* pDX, int nIDC, CString& value) { HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC); if(pDX->m_bSaveAndValidate){ GETTEXTEX gtex; gtex.cb = 1024; gtex.flags = GT_USECRLF; // 改行コード変換なし(改行コードは CR のみ) gtex.codepage = 1200; // UNICODE gtex.lpDefaultChar = NULL; // 1200 なので未使用 gtex.lpUsedDefChar = NULL; // 1200 なので未使用 ::SendMessage( hWndCtrl, EM_GETTEXTEX, (WPARAM)>ex, (LPARAM)value.GetBufferSetLength(1024) ); value.ReleaseBuffer(); }else{ SETTEXTEX stex; stex.flags = ST_DEFAULT; stex.codepage = 1200; // UNICODE ::SendMessage( hWndCtrl, EM_SETTEXTEX, (WPARAM)&stex, (LPARAM)value.GetBuffer() ); } } void CMainDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); (中略) DDX_TextUni(pDX, IDC_RICHEDIT, m_RichEditVal); //リッチエディットに割り当てた値変数 } //----------------ダイアログの.hに追加 void AFXAPI DDX_TextUni(CDataExchange* pDX, int nIDC, CString& value); 参考URL:http://d.hatena.ne.jp/halts/20030805 要は、コードページを1200(UNICODE)に設定して、DDXでそれを知らせてやる必要があったわけです。 わざわざご回答いただいたのに失礼かとは思いますが、これにて質問を締め切らせていただきます。