by NoWest » 2006年1月12日(木) 09:35
> リッチエディットにカレンダーを表示させているのですが、マウスでクリックした場合にフォーカスが移ってしまいカーソルが表示されてしまいます。
> これをラベルと同じように表示だけするようにしたいのですが、よい方法があれば教えてください(読み取り専用にする方法は見つけたのですがマウスでクリックするとカーソルが表示されてしまいます)。
私の勘が確かならば、下の方法でフォーカスを消せると思います。
細かい仕様は、そちらで変更してください。コントロールIDとか。。。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Select Case dwMsg
Case WM_COMMAND
Select Case LOWORD(wParam)
Case RichEdit1
Select Case HIWORD(wParam)
Case EN_SETFOCUS
SendDlgItemMessage(hWnd,RichEdit1,WM_KILLFOCUS,0,0)
End Select
End Select
End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
あと、カレンダーを表示するだけでしたら、専用のカレンダーコントロールと
いうのがコモンコントロールにありますのでそちらを使用するのも良いでしょう。
このコントロールのクラス名はAB4には定義されているようですね。
コード: 全て選択
Const MONTHCAL_CLASS = "SysMonthCal32"
[quote]> リッチエディットにカレンダーを表示させているのですが、マウスでクリックした場合にフォーカスが移ってしまいカーソルが表示されてしまいます。
> これをラベルと同じように表示だけするようにしたいのですが、よい方法があれば教えてください(読み取り専用にする方法は見つけたのですがマウスでクリックするとカーソルが表示されてしまいます)。[/quote]
私の勘が確かならば、下の方法でフォーカスを消せると思います。
細かい仕様は、そちらで変更してください。コントロールIDとか。。。
[hide][code]Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
Select Case dwMsg
Case WM_COMMAND
Select Case LOWORD(wParam)
Case RichEdit1
Select Case HIWORD(wParam)
Case EN_SETFOCUS
SendDlgItemMessage(hWnd,RichEdit1,WM_KILLFOCUS,0,0)
End Select
End Select
End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
[/code][/hide]
あと、カレンダーを表示するだけでしたら、専用のカレンダーコントロールと
いうのがコモンコントロールにありますのでそちらを使用するのも良いでしょう。
このコントロールのクラス名はAB4には定義されているようですね。
[code]Const MONTHCAL_CLASS = "SysMonthCal32"[/code]