背景色の変更だけなら普通のエディットボックスでも WM_CTLCOLOREDIT で出来ます。
普通のエディットボックスなら複数行でなくてもセンタリング出来ませんかね?
(少なくともWindows2000では出来ますが。)
> MFCを知らないのですが、MFC なら CRichEditCtrl::SetParaFormat
> というのはSDKだと別の書き方でできるのですか?
EM_SETPARAFORMAT メッセージです。
>普通のエディットボックスなら複数行でなくてもセンタリング出来ませんかね?
>(少なくともWindows2000では出来ますが。)
WindowsNTでも出来ますね
ありがとうございます。
今からEM_SETPARAFORMATをやってみます。
背景色の変更ならエディットボックスでWM_CTLCOLOREDITで出来るんですか?
やってみたけど、背景色は変わったけど、ボックス内の文字部分の
背景色は白です。この白を好きな色にする方法はありませんか?
これさえ分かればリッチエディットも必要ないのに。
> やってみたけど、背景色は変わったけど、ボックス内の文字部分の
> 背景色は白です。この白を好きな色にする方法はありませんか?
WM_CTLCOLOREDIT のハンドラで SetBkColor します。
引数のpDCに対してCDC::SetBkColorすれば良いのでは?
しまった(^^;
引数は、HDCでしたね・・
case WM_CTLCOLOREDIT:
SetBkColor((HDC)wParam, 45678);
break;
これでは色が変わりませんでした。
これからEM_SETPARAFORMATのほうもやってみます。
WM_CTLCOLOREDIT の戻り値はブラシを返すんですよ。
[spark 2002/02/27(水) 13:41:31] ではそうしてらしたと思うんですが、
それに加えて SetBkColor もするということです。
ありがとうございます。
リッチエディットならWin98で
ES_MULTILINEスタイルの時のみ
PARAFORMAT pf;
memset(&pf, 0, sizeof(PARAFORMAT));
pf.cbSize = sizeof(PARAFORMAT);
pf.dwMask = PFM_ALIGNMENT;
pf.wAlignment = PFA_CENTER;
SendMessage(hRich02, EM_SETPARAFORMAT, 0, (LPARAM)&pf);
でセンタリングできました。
エディットではWin98で
SetBkColor((HDC)wParam, 45678);
で成功していません。
これもOSがWin2000とかだとうまくいくんですか?
SetBkColorだけでなく
ブラシのハンドルも返しましょう
case WM_CTLCOLOREDIT:
SetBkColor((HDC)wParam, 45678);
return ( (LRESULT) hBrush );
break;
case WM_CTLCOLOREDIT:
return (LRESULT)(HBRUSH)SetBkColor((HDC)wParam, 45678);
break;
こうですか?
でも、背景色は白でした。
>case WM_CTLCOLOREDIT:
>return (LRESULT)(HBRUSH)SetBkColor((HDC)wParam, 45678);
>break
あの・・、::SetBkColorの戻り値は、COLORREFですよ・・
それをHBRUSHにキャストしてどうするの?
hBrush = ::CreateSolidBrush( 45678 );
のように一度だけブラシを準備しておきましょう
またもや
× のように一度だけブラシを準備しておきましょう
○ のように一度だけブラシを作成しておいて、使いましょう
return (LRESULT)(HBRUSH)SetBkColor((HDC)wParam, 45678);
はめちゃくちゃです。意味も分からず書いてみました。
ありがとうございました。
リッチエディットなら1行でもES_MULTILINEにする。
エディットなら
hBrush = CreateSolidBrush(123);
case WM_CTLCOLOREDIT:
SetBkColor((HDC)wParam, 456);
return ( (LRESULT) hBrush );
break;
のように背景色と、文字部分の背景色をそれそれれ指定する。
間違った部分かあったらご指摘お願いします。
忘れていましたが後始末も忘れずに・・
case WM_DESTORY://例えば
::DeleteObject( hBrush );
break;