リストボックスのオーナードローでInsertStringした文字列の取得
ダイアログボックスの上にリストボックスを貼り付け、そのリストボックスを各行ごとに色を変て表示させることにトライしています。
なんとかかんとか調べて、
1.リストボックスのリソースで「Owner Draw=固定」に設定変更した。
2.そのリストボックスを持つクラスのウィンドウメッセージ
WM_DRAWITEM
WM_MEASUREITEM
にハンドラを追加した。
3.以下の様にハンドラを記述した。
void COwnerTestDlg::OnMeasureItem(int nIDCtl,
LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = 10/*1行の高さを設定*/;
CDialog::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}
void COwnerTestDlg::OnDrawItem(int nIDCtl,
LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillSolidRect(&lpDrawItemStruct->rcItem, RGB(0,0,0)/*背景の色*/);
pDC->SetBkColor(RGB(0,0,0)/*文字の後ろの色*/);
pDC->SetTextColor(RGB(255,255,255)/*文字の色*/);
pDC->TextOut(lpDrawItemStruct->rcItem.left,
lpDrawItemStruct->rcItem.top,
(char*)lpDrawItemStruct->itemData/*行に書かれた文字列*/);
}
4. CListBox* wp = (CListBox*)GetDlgItem(IDC_LIST1);
wp->InsertString(-1,"ADDED");
とやり、うまく表示されました。
ここまでは良かったのですが、
次に、4.のところを
char wbuf[256];
strcpy(wbuf,"ADDED");
wp->InsertString(-1,wbuf);
とやったら文字化け(?)の様な、ちゃんと表示してくれなくなってしまいました。何がいけないのでしょうか?
お礼
ありがとうございました。そうですよね…文字列の型なのに数字でできるわけがないっすよね…アホすぎる質問ですいませんでした笑 ですけど、なぜかエラーはでなかったんですよね…笑