トップ回答者
MFCのリストコントロールへのフォント設定

質問
-
お世話になっております。
VisualStudioC++2005でMFCプログラムを作成しています。
画面にListCOntrolを配置して下記のコードで文字列をセットしています。
日本語OS(Win7,win10)では表示できるのですが、英語OS(Win7,WIn10)だと空文字になります。
menu[i][18].GetBUffer()を_T("文字列")とすると表示するので。どこが問題なんでしょうか?
初歩的で大変申し訳ないですが、御教授のほど、よろしくお願いします。
ちなみに同じプログラムの同じ画面上にあるツリーコントロールは、同じロジックで日本語を表示します。
開発環境
開発PC WIndows7日本語OS
開発ツール VisualStudio C++2005
開発タイプ MFCアプリケーション
サンプルコード
LVCOLUMN mlc;
RECT mlr;
static LVITEM mi;
int i;
CFont m_Font,*o_Font;
LOGFONT myLF;
//m_tree[4]同じ画面にあるツリーコントロール
o_Font=m_tree[4].GetFont();o_Font->GetLogFont(&myLF);//fav_clist リストコントロールの変数です
fav_clist.SetFonto_Font);
mlc.mask=LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;
mlc.pszText=_T("Program");
mlc.fmt=LVCFMT_CENTER;
fav_clist.InsertColumn(0,&mlc);fav_clist.DeleteAllItems();
for(i=0;i<row_no;i++)
{
mi.mask=LVIF_TEXT|LVIF_IMAGE;
mi.iItem=i;
mi.iSubItem=0;
//menu[i][13]はリストコントロールに表示する文字列でCString型
mi.pszText=menu[i][13].GetBuffer();
}
回答
-
bikkeさん、こんにちは。フォーラムオペレーターのHarukaです。
ご返信いただきありがとうございます。
データ変換を表示するためにブレークポイントを追加したことがありますか。
右クリックして一時停止する必要があるコード行にブレークポイントを追加すると、この時点まで実行されるとプログラムが一時停止し、値を表示しやすくなります。
ブレークポイントを使用し、mi.pszTextが正しい値を取得することを確認しましたか。
私の知る限り、コード内のいくつかの値のソースが表示されていないため、表示しているコードにエラーが存在しない可能性があると思います。
今できることは、ステップバイステップでエラーの可能性を排除し、最終的にそれを見つけることです。どうぞよろしくお願いします。
MSDN/ TechNet Community Support Haruka
ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~- 回答としてマーク bikke 2019年9月27日 2:20
すべての返信
-
bikkeさん、こんにちは。フォーラムオペレーターのHarukaです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
コードをテストしたところ、ループステートメントでfav_clist.InsertItem(&mi)を呼び出して構造情報をCListCtrlコントロールに渡さなかったため、データが表示されないことがわかりました。
同時に、英語OSが異常に表示されると言いましたが、menu[i][13]およびmi.pszTextの値を確認するブレークポイントを設定して、データ変換エラーが発生した場所を特定できます。
日本語および英語のOSでデータを表示する必要がある場合は、プロパティページでマルチバイトに変更できます。 これにより、多くのリスクが軽減されます。どうぞよろしくお願いします。
MSDN/ TechNet Community Support Haruka
ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~ -
bikkeさん、こんにちは。フォーラムオペレーターのHarukaです。
ご返信いただきありがとうございます。
データ変換を表示するためにブレークポイントを追加したことがありますか。
右クリックして一時停止する必要があるコード行にブレークポイントを追加すると、この時点まで実行されるとプログラムが一時停止し、値を表示しやすくなります。
ブレークポイントを使用し、mi.pszTextが正しい値を取得することを確認しましたか。
私の知る限り、コード内のいくつかの値のソースが表示されていないため、表示しているコードにエラーが存在しない可能性があると思います。
今できることは、ステップバイステップでエラーの可能性を排除し、最終的にそれを見つけることです。どうぞよろしくお願いします。
MSDN/ TechNet Community Support Haruka
ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~- 回答としてマーク bikke 2019年9月27日 2:20