IE, Firefox, Chrome 等でマウスホイールをクリックするとマウス移動でスクロール出来る機能。
- Windows Dev Center / Windows desktop applications /
- Design / Guidelines / Interaction / Mouse and Pointers
- Develop / Desktop technologies / Desktop App UI / Windows Controls / General Control Reference / Control Functions /
- Develop / Desktop technologies / Desktop App UI / Windows Controls / General Control Reference / Control Structures /
まず、DoReaderMode function のマニュアルに書いてある通り、この関数は公開ヘッダ内で宣言されていない。
引数として与える構造体 READERMODEINFO や、その中に与える ReaderScroll callback、TranslateDispatch callback、更に、フラグとして与える RMF_ZEROCURSOR, RMF_VERTICALONLY, RMF_HORIZONTALONLY についても同様に宣言されていない。
このため、これらは自前で宣言してやる必要がある。
なお、リファレンスマニュアルにある READERMODEINFO 構造体のメンバは fFlags が重複している。2つ目の fFlags は本来 pfnDspatch 辺りの名前にしておくのが適切と思われる。
次に、DoReaderMode は C:\Windows\System32\comctl32.dll の 383 番目に export されているのだが、dumpbin で見てみると以下のようにシンボルが設定されておらず [NONAME] と表示される。
以上についてのサンプルコードを以下にまとめた。
引数として与える構造体 READERMODEINFO や、その中に与える ReaderScroll callback、TranslateDispatch callback、更に、フラグとして与える RMF_ZEROCURSOR, RMF_VERTICALONLY, RMF_HORIZONTALONLY についても同様に宣言されていない。
このため、これらは自前で宣言してやる必要がある。
なお、リファレンスマニュアルにある READERMODEINFO 構造体のメンバは fFlags が重複している。2つ目の fFlags は本来 pfnDspatch 辺りの名前にしておくのが適切と思われる。
次に、DoReaderMode は C:\Windows\System32\comctl32.dll の 383 番目に export されているのだが、dumpbin で見てみると以下のようにシンボルが設定されておらず [NONAME] と表示される。
>dumpbin /EXPORTS C:\Windows\System32\comctl32.dll <中略> 383 00022900 [NONAME] <後略>このため、LoadLibrary() で動的にロードすると共に GetProcAddress() を ordinal value で呼び出す必要がある。
以上についてのサンプルコードを以下にまとめた。
- Gist / kou1okada / Win32 API - ReaderMode Example
- stackoverflow
- 2011-02-04: Handling of middle-mouse click
- 2012-11-06: Middle button click to scroll
- Brad Smith's Coding Blog / 2013-08-15: Enabling Reader Mode on the DataGridView (middle-click auto-scroll)
- Computer Programming Language Forum / MFC / 2001-01-18: GetAddressProc, Low and Hi-order words
- CodeProject 2007-08-25: The Ultimate Toolbox Intellimouse Classes
タグ
コメントをかく