ページ 11

EDITBOXの背景/文字色変更

Posted: 2007年3月21日(水) 11:35
by MML
タイトルのとおりのようなことをしようと思うのですが、
Googleなんかで「EDITBOX 背景色変更」なんかを
検索しても出てきません。
誰か知っている方はお教えください。

Posted: 2007年3月21日(水) 12:44
by konisi

どちらかというと

Posted: 2007年3月21日(水) 19:04
by trio
こっちのケースの方が参考になりそうです
おそらく

http://www.activebasic.com/forum/viewtopic.php?t=1006

Re: どちらかというと

Posted: 2007年3月26日(月) 10:45
by MML
konisiさん、tiroさん、返信ありがとうございます。

自分でもやってみたのですが、「背景色」でつまづきました。
背景色は「文字のあるところ」しかならないのですが...

以下は文字色変更部分のコードです

コード: 全て選択

SetBkColor(wParam,bkcol)
SetTextColor(wParam,fontcol)
GDIとGUIを共同で使っていると、オブジェクトが消えたりするのですが
対処法をお知りの方はお教えください。

Re:

Posted: 2007年3月26日(月) 11:35
by M.K
こんにちは、

「SetBkColor」はテキスト背後だけの色に適用されます。

エディットボックス全体に適用するには「ブラシ」を作成し、ウィンドウプロシージャの戻り値に
このブラシハンドルを返すといいようです。
コードを載せておきますので参考にしてください。

コード: 全て選択



'グローバル領域
Dim Edit1_BC As HBRUSH

'Createイベント

Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)

     'Edit1の背景用ブラシ(黄色にする)
      Edit1_BC = CreateSolidBrush(RGB(255,255,0))

End Sub

’Destroyイベント

Sub MainWnd_Destroy()
	'この1行を追加
	DeleteObject(Edit1_BC)

	FastApp_DestroyObjects()
	PostQuitMessage(0)

End Sub

’ウィンドウプロシージャ
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。

    Select Case dwMsg

        Case WM_CTLCOLOREDIT 

            Select Case lParam

                Case GetDlgItem(hWnd,EditBox1)

                    '文字背後は「透明」にしておく
                    SetBkMode(wParam,TRANSPARENT) 
                    '文字色は青色 
                   SetTextColor(wParam,RGB(0,0,255))

                    'ブラシハンドルを返す
                    MainWndProc = Edit1_BC
                    Exit Function

            End Select

     End Select

    ' イベントプロシージャの呼び出しを行います。
    MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)

End Function

Re:

Posted: 2007年3月26日(月) 11:38
by MML
M.K.さん、ありがとうございます!
今から試してみます!!