スクリーンセーバーにおけるIME対策
◆概要
このページは、Visual Basic 6.0で、スクリーンセーバーを作成する方法のうち、IME対策について記載しています。
◆内容
SetWindowPos APIを使って、フォームを最前面にしてもIMEのツールバーがそれよりも前に表示されます。これを解決するには、ダミーのPictureBoxを使います。
PictureBoxにはFormにもない「IMEMode」というプロパティがありますので、「3-オフ固定」に設定します。
本体表示後に、PictureBoxを画面外に放り出し(座標に負の値を入れます)、本体表示後にSetFocusでフォーカスを当てます。
◆Sample code
次のコードは、ダミーのPictureBoxをフォームに動的に追加し、IMEModeをオフ固定にしたのち、画面の外へPictureBoxを移動させています。
'(フォームの宣言部) Private oPict As Object 'ダミーのPictureBox用 '(フォームのForm_Loadイベントハンドラ) If strStartStyle = "S" Then '通常モードのとき frmSaver.Show 'これがないとSetfocusはエラーになる 'コントロールの動的追加 'ダミーのPicrureBox IME対策のため Set oPict = Controls.Add("VB.PictureBox", "picDummy") With oPict .Left = -8000 .Top = 100 .Width = 2000 .Height = 400 .Visible = True .IMEMode = 3 ’IME をオフ固定にします。 .SetFocus ’picDummyにフォーカス End With End If