VB6 PictureBoxマウスオーバー
-
07-07-2019 - |
質問
ユーザーコントロールでVB6 PictureBoxを使用しています。 PictureBoxの画像を設定し、BorderStyleを0に設定し、BackColorをユーザーコントロールのBackColorに設定します。アイデアは、「フローティング」したいということです。アイコン。ただし、マウスがそのアイコンの上に置かれたときに、そのアイコンがクリック可能に表示されるようにします。
2つの質問:
-
どのイベントを使用しますか? MouseMoveは「MouseOver」に最も近いようです。イベント。よりクリーンな代替手段はありますか?
-
スタイルを変更するにはどうすればよいですか?私はいくつかのことを試しましたが、どれもまったく正しく見えません。
解決
-
MouseMoveはVB6の正しいイベントです。マウスがクライアント領域から完全に離れたときを手動で検出するには、いくつかの作業を行う必要があります。 (この世界での私の実験では、何年も前のことですが、この動作を実装するのは常に難しいと感じていました。)
-
スタイルを変更するには、GDIを使用して以下を行うことをお勧めします。(a)画像を1ピクセル左上にシフトします。 (b)ButtonHighlightColorで、上端と左端に沿って単一のピクセルラインを描画します。 (c)ButtonShadowColorで、下端と右端に沿って単一のピクセルラインを描画します。これは、特にVB6では見た目よりもトリッキーなので、最終的にはお勧めします...
vbAcceleratorのツールバーコントロールをご覧ください。彼らは無料で、おそらくあなたが行きたい場所のほとんどをあなたに提供します。 (そして、はい、それらは「クラシック」VB-つまりVB6です。)