いつもお世話になります。
さて、早速質問なのですが、
題のとおり1つのエディットボックス内に表示させるテキストの色分けをしたいのです。
具体的に言うと、
m_messageという、メンバ変数を作成して、そこに
aaa、bbbという、2通りのテキストを表示させます。
このときに、aaaは青で表示し、
bbbは赤で表示としたいのですが、なかなか、上手くいきません。
また、このときに文字を表示させるのは最初から入っているのではなく、
マウスの右ボタンを押したときにはaaa、
左ボタンを押したときにはbbb
と場合わけをしています。
void CMainView2::OnRButtonDown(UINT nFlags, CPoint point)
{
CString work=";
m_message=aaa\r\n;
work=m_message;
m_message=work+m_message;
UpdateData(FALSE);
CFormView::OnRButtonDown(nFlags, point);
}
void CMainView2::OnLButtonDown(UINT nFlags, CPoint point)
{
CString work=";
m_message=bbb\r\n;
work=m_message;
m_message=work+m_message;
UpdateData(FALSE);
CFormView::OnRButtonDown(nFlags, point);
}
HBRUSH CMainView2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
if(Symbol==aaa)
{
pDC->SetTextColor(RGB(255,0,0));
}
else pDC->SetTextColor(RGB(0,0,255));
return hbr;
}
この、プログラムだと、
色はきちんと変わるのですが、
ボックス内のテキストすべての色が変わってしまいます。
長くなってすいませんが
何か、ご助言ください。
環境Win2000,MDI,MFC
ふつーのedit-boxでは、部分的に色を変えることはできません。
早速のレスありがとうございます。
やはりそうですか。。。
方法としては、edit-boxを複数配置するしかないのでしょうか??
なにか、他に方法があるのでしょうか??
作っているものが、アラートを表示するものなので、
出来れば見た目をきれいにし、色分けをしたいと考えていたもので…
助言ありがとうございます。
リッチエディットにして上手く動きました。
以下、コードです。
void CMainView2::OnRButtonDown(UINT nFlags, CPoint point)
{
message=aaa\r\n;
CFormView::OnRButtonDown(nFlags, point);
}
void CMainView2::OnLButtonDown(UINT nFlags, CPoint point)
{
message=bbb\r\n;
CFormView::OnRButtonDown(nFlags, point);
}
void CMainView2::CtlColor()
{
CHARFORMAT cf;
CRichEditCtrl *cre=(CRichEditCtrl *)GetDlgItem(IDC_Alert);
cre->GetSelectionCharFormat(cf);
cf.dwMask=CFM_COLOR;
cf.dwEffects=0;
if(Symbol==aaa)
{
cf.crTextColor=RGB(255,0,0);
}
else
{
cf.crTextColor=RGB(0,0,255);
}
cre->SetSelectionCharFormat(cf);
cre->ReplaceSel(message);
}
ところで、
リッチエディットのことなのですが、
”無効”にした状態だと、
スクロールバーが動きません。
コレを動かすようにする方法はあるのでしょうか??
”無効”ではなくSetReadOnlyを使用します。
ありがとうございます。
m_Alert.SetReadOnly(TRUE);
を記述することで解決は出来ましたが、
新たな問題が。。。
コレだと、書き込みは出来ないのですが、
カーソル??(点滅してるやつ)みたいなものが出てきますよね?
なので、次に書き込むときにはそのカーソルがある位置からになってしまうのです。。。
コレを、回避する方法はないのでしょうか?
質問ばかりしてすいません。
次に書き込むときに、カーソルを移動してから書けばよいです。
すいません。
質問が悪かったようですね。
私が行いたいのは、
このページのようにカーソル自体が出てこないというのをつくりたかったのです。
すいません。
まさに、このページのような感じで、
コピーは出来るのだけど、書き込みは出来なくカーソルも出てこない。
もちろん、スクロールも出来るといったのを作成したかったのです。
すいません、質問下手で。
また、よろしければ、ご助言ください
いろいろ助言ありがとうございました。
読取専用で、
カーソルの位置を移動することで、解決しました。
いろいろな助言ありがとうございました。
