色を変更する必要がある非読み取り専用の編集コントロールがあるため、WM_CTLCOLOREDIT を処理します。連続して入力している場合はうまく機能しますが、問題は、バックスペースを押したり、削除したり、既存のテキストの途中から入力を開始したりすると、表示がすべて乱雑になることです。親のサイズを変更するなどして再描画するまで、それは残ります。これを修正するにはどうすればよいですか?
編集:いくつかの詳細。この問題は、背景色が設定されている場合にのみ発生し、テキストの色だけが設定されている場合には発生しません。コードは次のようになります
ON_MESSAGE(WM_CTLCOLOREDIT, OnEditColor)
LRESULT CMyWindow::OnEditColor(WPARAM wp, LPARAM lp)
{
HDC hdc = (HDC)wp;
HWND hwnd = (HWND)lp;
if(hwnd == m_edit.GetSafeHwnd())
{
// SetBkMode(hdc, TRANSPARENT);
MyControlInfo*pcti;// accessed from somewhere
SetTextColor(hdc, pcti->theme.clrText);
// return (LRESULT)pcti->brush.GetSafeHandle();
}
return 0;
}
ありがとう