スクリーンセーバーにおける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


▼ページトップへ