Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ããŠã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠã§ãããçç¥å¯èœãªãŠãŒã¶ãŒå ¥åããã€ã¹ã§ãã é©åã«èšè¿°ãããã¢ããªã±ãŒã·ã§ã³ã«ã¯ããŠã¹ ã€ã³ã¿ãŒãã§ã€ã¹ãå«ããå¿ èŠããããŸããããŠãŒã¶ãŒå ¥åãååŸããããã«ããŠã¹ã®ã¿ã«äŸåããã¹ãã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããŒããŒãã®å®å šãªãµããŒããæäŸããå¿ èŠããããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãããŠã¹å ¥åãã¡ãã»ãŒãžã®åœ¢åŒã§åãåãããã®ã¡ãã»ãŒãžããŠã£ã³ããŠã«éä¿¡ãŸãã¯æçš¿ãããŸãã
ãã®ã»ã¯ã·ã§ã³ã¯ã次ã®ãããã¯ã§æ§æãããŠããŸãã
- ããŠã¹ ã«ãŒãœã«
- ããŠã¹ ãã£ããã£
- Mouse ClickLock
- ããŠã¹æ§æ
- XBUTTON
- ããŠã¹ ã¡ãã»ãŒãž
- ããŠã¹ ãœããŒ
- ããŠã¹ã®æ¶å€±
- ããŠã¹ ãã€ãŒã«
- ãŠã£ã³ããŠã®ã¢ã¯ãã£ãå
ããŠã¹ ã«ãŒãœã«
ãŠãŒã¶ãŒãããŠã¹ãåãããšãããŠã¹ ã«ãŒãœã«ãšåŒã°ãããããããããç»é¢äžã§ç§»åããŸãã ããŠã¹ ã«ãŒãœã«ã«ã¯ãããã ã¹ããããšåŒã°ãã 1 ã€ã®ãã¯ã»ã« ãã€ã³ããå«ãŸããŠããŸããããã¯ãã·ã¹ãã ãã«ãŒãœã«ã®äœçœ®ãšããŠè¿œè·¡ããŠèªèãããã€ã³ãã§ãã ããŠã¹ ã€ãã³ããçºçãããšãããã ã¹ããããå«ããŠã£ã³ããŠã¯ãéåžžãã€ãã³ãã«èµ·å ããããŠã¹ ã¡ãã»ãŒãžãåãåããŸãã ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ããããããŠã¹ ã¡ãã»ãŒãžãåãåãããã«ããŒããŒã ãã©ãŒã«ã¹ãèšå®ãããããå¿ èŠã¯ãããŸããã
ã·ã¹ãã ã¯ãããŠã¹ã®é床ãå¶åŸ¡ãã倿° (ãŠãŒã¶ãŒãããŠã¹ãç§»åãããšãã«ã«ãŒãœã«ãç§»åããè·é¢) ãç¶æããŸãã SystemParametersInfo 颿°ã SPI_GETMOUSE ãŸã㯠SPI_SETMOUSE ãã©ã°ãšå ±ã«äœ¿çšãããšãããŠã¹ã®é床ãååŸãŸãã¯èšå®ã§ããŸãã ããŠã¹ ã«ãŒãœã«ã®è©³çްã«ã€ããŠã¯ããã«ãŒãœã«ããåç §ããŠãã ããã
ããŠã¹ ãã£ããã£
ã·ã¹ãã ã¯éåžžãããŠã¹ ã€ãã³ããçºçãããšãã«ã«ãŒãœã« ããã ã¹ããããå«ããŠã£ã³ããŠã«ããŠã¹ ã¡ãã»ãŒãžããã¹ãããŸãã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãSetCapture 颿°ã䜿çšããŠããŠã¹ ã¡ãã»ãŒãžãç¹å®ã®ãŠã£ã³ããŠã«ã«ãŒãã£ã³ã°ããããšã§ããã®åäœã倿Žã§ããŸãã ãŠã£ã³ããŠã¯ãã¢ããªã±ãŒã·ã§ã³ã ReleaseCapture 颿°ãåŒã³åºãããå¥ã®ãã£ãã㣠ãŠã£ã³ããŠãæå®ãããŸã§ããŸãã¯ãŠãŒã¶ãŒãå¥ã®ã¹ã¬ããã«ãã£ãŠäœæããããŠã£ã³ããŠãã¯ãªãã¯ãããŸã§ããã¹ãŠã®ããŠã¹ ã¡ãã»ãŒãžãåãåããŸãã
ããŠã¹ ãã£ããã£ã倿Žããããšãã·ã¹ãã ã¯ããŠã¹ ãã£ããã£ã倱ã£ãŠãããŠã£ã³ããŠã« WM_CAPTURECHANGED ã¡ãã»ãŒãžãéä¿¡ããŸãã ã¡ãã»ãŒãžã® lParam ãã©ã¡ãŒã¿ãŒã¯ãããŠã¹ ãã£ããã£ãååŸãããŠã£ã³ããŠãžã®ãã³ãã«ãæå®ããŸãã
ããŠã¹å ¥åããã£ããã£ã§ããã®ã¯ãåé¢ã®ãŠã£ã³ããŠã ãã§ãã ããã¯ã°ã©ãŠã³ã ãŠã£ã³ããŠãããŠã¹å ¥åããã£ããã£ããããšããå Žåããã®ãŠã£ã³ããŠã¯ãã«ãŒãœã« ããã ã¹ãããããã®ãŠã£ã³ããŠã®è¡šç€ºéšåå ã«ãããšãã«çºçããããŠã¹ ã€ãã³ãã«ã€ããŠã®ã¿ãã¡ãã»ãŒãžãåãåããŸãã
ããŠã¹å ¥åã®ãã£ããã£ã¯ãã«ãŒãœã«ããŠã£ã³ããŠã®å€åŽã«ç§»åããå Žåã§ãããŠã£ã³ããŠããã¹ãŠã®ããŠã¹å ¥åãåãåãå¿ èŠãããå Žåã«äŸ¿å©ã§ãã ããšãã°ãã¢ããªã±ãŒã·ã§ã³ã§ã¯ãéåžžãmouse button up event ã€ãã³ããçºçãããŸã§ã«ãŒãœã«ã®åŸã«ãmouse button down ã€ãã³ãåŸã®ã«ãŒãœã«äœçœ®ã远跡ããŸãã ã¢ããªã±ãŒã·ã§ã³ãããŠã¹å ¥åããã£ããã£ããããŠãŒã¶ãŒããŠã£ã³ããŠã®å€ã§ããŠã¹ ãã¿ã³ãé¢ããå ŽåããŠã£ã³ããŠã¯ãã¿ã³ã¢ãã ã¡ãã»ãŒãžãåãåããŸããã
ã¹ã¬ããã¯ãGetCapture 颿°ã䜿çšããŠããŠã£ã³ããŠã® 1 ã€ãããŠã¹ããã£ããã£ãããã©ããã倿ã§ããŸãã ã¹ã¬ããã®ãŠã£ã³ããŠã® 1 ã€ãããŠã¹ããã£ããã£ããå ŽåãGetCapture ã¯ãŠã£ã³ããŠã«ãã³ãã«ãååŸããŸãã
Mouse ClickLock
Mouse ClickLock ã¢ã¯ã»ã·ããªãã£æ©èœã䜿çšãããšããŠãŒã¶ãŒã¯ 1 åã®ã¯ãªãã¯åŸã«ãã©ã€ã㪠ããŠã¹ ãã¿ã³ãããã¯ããŠã³ã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¿ã³ãæŒãããããã«èŠããŸãã ãã¿ã³ã®ããã¯ãè§£é€ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãããŠã¹ ã¡ãã»ãŒãžãéä¿¡ãããããŠãŒã¶ãŒãä»»æã®ããŠã¹ ãã¿ã³ãã¯ãªãã¯ã§ããŸãã ãã®æ©èœã«ããããŠãŒã¶ãŒã¯è€éãªããŠã¹ã®çµã¿åãããããåçŽã«è¡ãããšãã§ããŸãã ããšãã°ãç¹å®ã®ç©ççãªå¶éãããå Žåã¯ãããã¹ãã®åŒ·èª¿è¡šç€ºããªããžã§ã¯ãã®ãã©ãã°ãã¡ãã¥ãŒã®éãæ¹ãç°¡åã«ãªããŸãã 詳现ã«ã€ããŠã¯ã次ã®ãã©ã°ãšãSystemParametersInfo ã®åèãåç §ããŠãã ããã
- SPI_GETMOUSECLICKLOCK
- SPI_SETMOUSECLICKLOCK
- SPI_GETMOUSECLICKLOCKTIME
- SPI_SETMOUSECLICKLOCKTIME
ããŠã¹æ§æ
ããŠã¹ã¯ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠãªå ¥åããã€ã¹ã§ããããã¹ãŠã®ãŠãŒã¶ãŒãå¿ ãããããŠã¹ãæã£ãŠããããã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã¯ãSM_MOUSEPRESENT å€ã GetSystemMetrics 颿°ã«æž¡ãããšã«ãã£ãŠãã·ã¹ãã ã«ããŠã¹ãå«ãŸããŠãããã©ããã倿ã§ããŸãã
Windows ã§ã¯ãæå€§ 3 ã€ã®ãã¿ã³ãæã€ããŠã¹ããµããŒããããŠããŸãã 3 ãã¿ã³ã®ããŠã¹ã§ã¯ããã¿ã³ã¯å·Šãäžå€®ãå³ã®ãã¿ã³ãšããŠæå®ãããŸãã ããŠã¹ ãã¿ã³é¢é£ã®ã¡ãã»ãŒãžãšååä»ã宿°ã¯ãLãMãR ã®æåã䜿çšããŠãã¿ã³ãèå¥ããŸãã ãã¿ã³ã 1 ã€ã®ããŠã¹äžã®ãã¿ã³ã¯ãå·Šãã¿ã³ãšèªèãããŸãã Windows ã§ã¯è€æ°ã®ãã¿ã³ãããããŠã¹ããµããŒããããŠããŸãããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯äž»ã«å·Šãã¿ã³ã䜿çšããä»ã®ãã¿ã³ã¯äœ¿ããšããŠãæå°éã§ãã
ã¢ããªã±ãŒã·ã§ã³ã¯ãããŠã¹ ãã€ãŒã«ããµããŒãããŸãã ããŠã¹ ãã€ãŒã«ã¯æŒãããå転ããããããããšãã§ããŸãã ããŠã¹ ãã€ãŒã«ãæŒããããšãäžå€® (3 çªç®) ãã¿ã³ãšããŠæ©èœããéåžžã®äžå€®ãã¿ã³ ã¡ãã»ãŒãžãã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ãããŸãã å転ãããšããã€ãŒã« ã¡ãã»ãŒãžãã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ãããŸãã 詳现ã«ã€ããŠã¯ããããŠã¹ ãã€ãŒã«ãã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
ã¢ããªã±ãŒã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãã³ã ãã¿ã³ããµããŒãããŸãã ãããã®ãã¿ã³ã¯ãXBUTTON1ãŸãã¯XBUTTON2ãšåŒã°ããã€ã³ã¿ãŒããã ãã©ãŠã¶ãŒãé»åã¡ãŒã«ãããã³ã¡ãã£ã¢ ãµãŒãã¹ã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«èšèšãããŠããŸãã XBUTTON1ãŸãã¯XBUTTON2ãæŒããããšãWM_APPCOMMAND ã¡ãã»ãŒãžãã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ãããŸãã 詳现ã«ã€ããŠã¯ããWM_APPCOMMAND ã¡ãã»ãŒãžãã®èª¬æãåç §ããŠãã ããã
ã¢ããªã±ãŒã·ã§ã³ã¯ãSM_CMOUSEBUTTONS å€ã GetSystemMetrics 颿°ã«æž¡ãããšã«ãã£ãŠãããŠã¹äžã®ãã¿ã³ã®æ°ã決å®ã§ããŸãã å·Šå©ãã®ãŠãŒã¶ãŒã«ããŠã¹ãæ§æããããã«ãã¢ããªã±ãŒã·ã§ã³ã¯ SwapMouseButton 颿°ã䜿çšããŠãããŠã¹ã®å·Šãã¿ã³ãšå³ãã¿ã³ã®æå³ãå転ãããããšãã§ããŸãã ãã 1 ã€ã®æ¹æ³ãšããŠãSPI_SETMOUSEBUTTONSWAP å€ã SystemParametersInfo 颿°ã«æž¡ãããšã§ãããã¿ã³ã®æå³ãå転ãããããšãã§ããŸãã ãã ããããŠã¹ã¯å ±æãªãœãŒã¹ã§ããããããã¿ã³ã®æå³ãéã«ãããšãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ããã®ã§ã泚æãã ããã
XBUTTONs
Windows ã§ã¯ãå·Šãäžå€®ãå³ã® 5 ã€ã®ãã¿ã³ã«å ããŠãXBUTTON1ãšXBUTTON2ãšåŒã°ãã 2 ã€ã®è¿œå ãã¿ã³ãåããããŠã¹ããµããŒããããŠããŸãã XBUTTON1ãã¿ã³ãšXBUTTON2 ãã¿ã³ã¯ãå€ãã®å ŽåãããŠã¹ã®åŽé¢ (ããŒã¹ã®è¿ã) ã«ãããŸãã ãããã®è¿œå ã®ãã¿ã³ã¯ãã¹ãŠã®ããŠã¹ã«ååšããããã§ã¯ãããŸããã ååšããå Žåãå€ãã®å ŽåãXBUTTON1ãã¿ã³ãšXBUTTON2 ãã¿ã³ã¯ãWeb ãã©ãŠã¶ãŒã§ã®åæ¹ããã²ãŒã·ã§ã³ãåŸæ¹ããã²ãŒã·ã§ã³ãªã©ãã¢ããªã±ãŒã·ã§ã³é¢æ°ã«ããããããŸãã
ãŠã£ã³ã㊠ãããŒãžã£ãŒã¯ãWM_XBUTTON* ããã³ WM_NCXBUTTON* ã¡ãã»ãŒãžãä»ãã XBUTTON1 ãš XBUTTON2 ããµããŒãããŸãã ãããã®ã¡ãã»ãŒãžã® WPARAM ã® HIWORD ã«ã¯ãã©ã® XBUTTON ãæŒããããã瀺ããã©ã°ãå«ãŸããŠããŸãã ãããã®ããŠã¹ ã¡ãã»ãŒãžã¯å®æ° WM_MOUSEFIRST ãš WM_MOUSELASTã®éã«ãåãŸããããã¢ããªã±ãŒã·ã§ã³ã¯ã GetMessage ãŸã㯠PeekMessage ã䜿çšããŠããã¹ãŠã®ããŠã¹ ã¡ãã»ãŒãžããã£ã«ã¿ãŒåŠçã§ããŸãã
次ã®ãµããŒã XBUTTON1 ãš XBUTTON2ã
- WM_APPCOMMAND
- WM_NCXBUTTONDBLCLK
- WM_NCXBUTTONDOWN
- WM_NCXBUTTONUP
- WM_XBUTTONDBLCLK
- WM_XBUTTONDOWN
- WM_XBUTTONUP
- MOUSEHOOKSTRUCTEX
次㮠API ã¯ããããã®ãã¿ã³ããµããŒãããããã«å€æŽãããŸããã
ã³ã³ããŒãã³ã ã¢ããªã±ãŒã·ã§ã³ã®åãŠã£ã³ããŠããXBUTTON1 ãš XBUTTON2 ã®ã³ãã³ããçŽæ¥å®è£ ã§ããå¯èœæ§ã¯äœãã§ãã ãã®ãããdefWindowProcãXBUTTON1ãŸãã¯XBUTTON2ãã¯ãªãã¯ããããšãã«ãŠã£ã³ããŠã« WM_APPCOMMAND ã¡ãã»ãŒãžãéä¿¡ããŸãã DefWindowProc ã¯ã芪ãŠã£ã³ããŠã«ã WM_APPCOMMAND ã¡ãã»ãŒãžãéä¿¡ããŸãã ããã¯ãå³ã¯ãªãã¯ã§ã³ã³ããã¹ã ã¡ãã¥ãŒãåŒã³åºãæ¹æ³ãšäŒŒãŠããŸããDefWindowProc ã¯ãã¡ãã¥ãŒãšãã®èŠªã« WM_CONTEXTMENU ã¡ãã»ãŒãžããéä¿¡ããŸãã ããã«ãDefWindowProc ããäžäœãŠã£ã³ããŠã§ WM_APPCOMMAND ã¡ãã»ãŒãžãåä¿¡ããå ŽåãHSHELL_APPCOMMAND ã³ãŒãã䜿çšããŠãã·ã§ã« ããã¯ãåŒã³åºããŸãã
ãã©ãŠã¶é¢æ°ãã¡ãã£ã¢é¢æ°ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åãããã³é»æºç®¡çã®ããã®è¿œå ã®ããŒãæã€ããŒããŒãããµããŒããããŠããŸãã 詳现ã«ã€ããŠã¯ãããã©ãŠãºããã³ä»ã®é¢æ°ã®ããŒããŒã ããŒããåç §ããŠãã ããã
ããŠã¹ ã¡ãã»ãŒãž
ããŠã¹ã¯ããŠãŒã¶ãŒãããŠã¹ãåããããšãããŸãã¯ããŠã¹ ãã¿ã³ãæŒãããé¢ããããããšãã«å ¥åã€ãã³ããçæããŸãã ã·ã¹ãã ã¯ãããŠã¹å ¥åã€ãã³ããã¡ãã»ãŒãžã«å€æããé©åãªã¹ã¬ããã®ã¡ãã»ãŒãž ãã¥ãŒã«ãã¹ãããŸãã ããŠã¹ ã¡ãã»ãŒãžãã¹ã¬ããã§åŠçã§ãããããéãæçš¿ããããšãã·ã¹ãã ã¯ææ°ã®ããŠã¹ ã¡ãã»ãŒãžãé€ããã¹ãŠã®ã¡ãã»ãŒãžãç Žæ£ããŸãã
ã«ãŒãœã«ããŠã£ã³ããŠã®å¢çç·å ã«ãããšãã«ããŠã¹ ã€ãã³ããçºçãããšãããŸãã¯ãŠã£ã³ããŠãããŠã¹ããã£ããã£ãããšãã«ããŠã£ã³ããŠã¯ãããŠã¹ ã¡ãã»ãŒãžãåãåããŸãã ããŠã¹ ã¡ãã»ãŒãžã¯ãã¯ã©ã€ã¢ã³ãé åã¡ãã»ãŒãžãšéã¯ã©ã€ã¢ã³ãé åã¡ãã»ãŒãžã® 2 ã€ã®ã°ã«ãŒãã«åãããŠããŸãã éåžžãã¢ããªã±ãŒã·ã§ã³ã¯ã¯ã©ã€ã¢ã³ãé åã¡ãã»ãŒãžãåŠçããã¯ã©ã€ã¢ã³ãé å以å€ã®ã¡ãã»ãŒãžãç¡èŠããŸãã
ãã®ã»ã¯ã·ã§ã³ã¯ã次ã®ãããã¯ã§æ§æãããŠããŸãã
- ã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãž
- éã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãž
- WM_NCHITTEST ã¡ãã»ãŒãž
ã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãž
ãŠã£ã³ããŠã®ã¯ã©ã€ã¢ã³ãé åå ã§ããŠã¹ ã€ãã³ããçºçãããšããŠã£ã³ããŠã¯ã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžãåãåããŸãã ãŠãŒã¶ãŒãã¯ã©ã€ã¢ã³ãé åå ã§ã«ãŒãœã«ãç§»åãããšãWM_MOUSEMOVE ã¡ãã»ãŒãžããŠã£ã³ããŠã«ãã¹ããããŸãã ã«ãŒãœã«ãã¯ã©ã€ã¢ã³ãé åå ã«ããéã«ããŠãŒã¶ãŒãããŠã¹ ãã¿ã³ãæŒããé¢ããšã次ã®ããããã®ã¡ãã»ãŒãžããã¹ããããŸãã
| ã¡ãã»ãŒãž | æå³ |
|---|---|
| WM_LBUTTONDBLCLK | ããŠã¹ã®å·Šãã¿ã³ãããã«ã¯ãªãã¯ããã |
| WM_LBUTTONDOWN | ããŠã¹ã®å·Šãã¿ã³ãæŒããã |
| WM_LBUTTONUP | ããŠã¹ã®å·Šãã¿ã³ãé¢ããã |
| WM_MBUTTONDBLCLK | ããŠã¹ã®äžå€®ãã¿ã³ãããã«ã¯ãªãã¯ããã |
| WM_MBUTTONDOWN | ããŠã¹ã®äžå€®ãã¿ã³ãæŒããã |
| WM_MBUTTONUP | ããŠã¹ã®äžå€®ãã¿ã³ãé¢ããã |
| WM_RBUTTONDBLCLK | ããŠã¹ã®å³ãã¿ã³ãããã«ã¯ãªãã¯ããã |
| WM_RBUTTONDOWN | ããŠã¹ã®å³ãã¿ã³ãæŒããã |
| WM_RBUTTONUP | ããŠã¹ã®å³ãã¿ã³ãé¢ããã |
| WM_XBUTTONDBLCLK | X ããŠã¹ ãã¿ã³ãããã«ã¯ãªãã¯ããã |
| WM_XBUTTONDOWN | ããŠã¹ã® X ãã¿ã³ãæŒããã |
| WM_XBUTTONUP | ããŠã¹ã® X ãã¿ã³ãé¢ããã |
ããã«ãã¢ããªã±ãŒã·ã§ã³ã¯ TrackMouseEvent 颿°ãåŒã³åºããŠãã·ã¹ãã ããä»ã® 2 ã€ã®ã¡ãã»ãŒãžãéä¿¡ãããããšãã§ããŸãã ã«ãŒãœã«ãäžå®æéã¯ã©ã€ã¢ã³ãé åã®äžã«çœ®ããšãWM_MOUSEHOVER ã¡ãã»ãŒãžããã¹ããããŸãã ã«ãŒãœã«ãã¯ã©ã€ã¢ã³ãé åããé¢ãããšãWM_MOUSELEAVE ã¡ãã»ãŒãžããã¹ããããŸãã
ã¡ãã»ãŒãžã®ãã©ã¡ãŒã¿ãŒ
ã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžã® lParam ãã©ã¡ãŒã¿ãŒã¯ãã«ãŒãœã«ã®ããã ã¹ãããã®äœçœ®ã瀺ããŸãã äžäœã¯ãŒãã¯ããã ã¹ãããã® x 座æšã瀺ããé«äœã¯ãŒã㯠y 座æšã瀺ããŸãã 座æšã¯ã¯ã©ã€ã¢ã³ã座æšã§æå®ãããŸãã ã¯ã©ã€ã¢ã³ã座æšç³»ã§ã¯ãç»é¢äžã®ãã¹ãŠã®ãã€ã³ãã¯ãã¯ã©ã€ã¢ã³ãé åã®å·Šäžé ã®åº§æš (0,0) ãåºæºã«ããŠæå®ãããŸãã
wParam ãã©ã¡ãŒã¿ãŒã«ã¯ãä»ã®ããŠã¹ ãã¿ã³ã®ç¶æ ãšãããŠã¹ ã€ãã³ãæã® Ctrl ããŒãš Shift ããŒã瀺ããã©ã°ãå«ãŸããŠããŸãã ããŠã¹ ã¡ãã»ãŒãžåŠçãå¥ã®ããŠã¹ ãã¿ã³ã®ç¶æ ããŸã㯠Ctrl ããŒãŸã㯠Shift ããŒã®ç¶æ ã«äŸåããŠããå Žåã¯ããããã®ãã©ã°ã確èªã§ããŸãã wParam ãã©ã¡ãŒã¿ãŒã¯ã次ã®å€ãšçµã¿åãããŠæå®ã§ããŸãã
| å€ | 説æ |
|---|---|
| MK_CONTROL | CTRL ããŒãæŒãããŠããŸãã |
| MK_LBUTTON | ããŠã¹ã®å·Šãã¿ã³ãæŒãããŠããŸãã |
| MK_MBUTTON | ããŠã¹ã®äžå€®ãã¿ã³ãæŒãããŠããŸãã |
| MK_RBUTTON | ããŠã¹ã®å³ãã¿ã³ãæŒãããŠããŸãã |
| MK_SHIFT | Shift ããŒãæŒãããŠããŸãã |
| MK_XBUTTON1 | XBUTTON1ãããŠã³ããŠããŸãã |
| MK_XBUTTON2 | XBUTTON2ãããŠã³ããŠããŸãã |
ã¡ãã»ãŒãžãããã«ã¯ãªãã¯ãã
ãŠãŒã¶ãŒãããŠã¹ ãã¿ã³ã 2 åé£ç¶ããŠã¯ãªãã¯ãããšãããã«ã¯ãªã㯠ã¡ãã»ãŒãžãçæãããŸãã ãŠãŒã¶ãŒããã¿ã³ãã¯ãªãã¯ãããšãã«ãŒãœã«ã®ããã ã¹ããããäžå¿ãšããåè§åœ¢ãã·ã¹ãã ã«ãã£ãŠç¢ºç«ãããŸãã ãŸããã¯ãªãã¯ãçºçããæå»ãããŒã¯ããŸãã ãŠãŒã¶ãŒãåããã¿ã³ã 2 åã¯ãªãã¯ãããšãããã ã¹ãããããŸã åè§åœ¢å ã«ãããã©ããã倿ããæåã®ã¯ãªãã¯ããã®çµéæéãèšç®ããŸãã ããã ã¹ãããããŸã åè§åœ¢å ã«ãããçµéæéãããã«ã¯ãªã㯠ã¿ã€ã ã¢ãŠãå€ãè¶ ããŠããªãå Žåãã·ã¹ãã ã¯ããã«ã¯ãªã㯠ã¡ãã»ãŒãžãçæããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ããããã GetDoubleClickTime 颿°ãš SetDoubleClickTime 颿°ã䜿çšããŠãããã«ã¯ãªã㯠ã¿ã€ã ã¢ãŠãå€ãååŸããã³èšå®ã§ããŸãã ãŸãã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ãSystemParametersInfo 颿°ã§ SPI_SETDOUBLECLICKTIME ãã©ã°ã䜿çšããŠãããã«ã¯ãªã㯠ã¿ã€ã ã¢ãŠãå€ãèšå®ã§ããŸãã ãŸããSPI_SETDOUBLECLKWIDTH ãã©ã°ãš SPI_SETDOUBLECLKHEIGHT ãã©ã°ã SystemParametersInfo ã«æž¡ãããšã§ãããã«ã¯ãªãã¯ãæ€åºããããã«ã·ã¹ãã ã䜿çšããåè§åœ¢ã®ãµã€ãºãèšå®ããããšãã§ããŸãã ãã ããããã«ã¯ãªã㯠ã¿ã€ã ã¢ãŠãå€ãšåè§åœ¢ãèšå®ãããšããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«åœ±é¿ããŸãã
ã¢ããªã±ãŒã·ã§ã³å®çŸ©ãŠã£ã³ããŠã§ã¯ãæ¢å®ã§ã¯ããã«ã¯ãªã㯠ã¡ãã»ãŒãžã¯åä¿¡ãããŸããã ããã«ã¯ãªã㯠ã¡ãã»ãŒãžã®çæã«é¢é£ããã·ã¹ãã ãªãŒããŒãããã®ããããããã®ã¡ãã»ãŒãžã¯ãCS_DBLCLKS ã¯ã©ã¹ ã¹ã¿ã€ã«ãæã€ã¯ã©ã¹ã«å±ãããŠã£ã³ããŠã«å¯ŸããŠã®ã¿çæãããŸãã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããŠã£ã³ã㊠ã¯ã©ã¹ãç»é²ãããšãã«ãã®ã¹ã¿ã€ã«ãèšå®ããå¿ èŠããããŸãã 詳现ã«ã€ããŠã¯ãããŠã£ã³ã㊠ã¯ã©ã¹ããåç §ããŠãã ããã
ããã«ã¯ãªã㯠ã¡ãã»ãŒãžã¯ãåžžã« 4 ã€ã®ã¡ãã»ãŒãž ã·ãªãŒãºã® 3 çªç®ã®ã¡ãã»ãŒãžã§ãã æåã® 2 ã€ã®ã¡ãã»ãŒãžã¯ãæåã®ã¯ãªãã¯ã«ãã£ãŠçæããããã¿ã³ããŠã³ ã¡ãã»ãŒãžãšãã¿ã³ã¢ãã ã¡ãã»ãŒãžã§ãã 2 åç®ã®ã¯ãªãã¯ã§ã¯ãããã«ã¯ãªã㯠ã¡ãã»ãŒãžã衚瀺ããããã®åŸã«å¥ã®ãã¿ã³ã¢ãã ã¡ãã»ãŒãžãçæãããŸãã ããšãã°ãããŠã¹ã®å·Šãã¿ã³ãããã«ã¯ãªãã¯ãããšã次ã®äžé£ã®ã¡ãã»ãŒãžãçæãããŸãã
ãŠã£ã³ããŠã¯ãããã«ã¯ãªã㯠ã¡ãã»ãŒãžãåä¿¡ããåã«åžžã«ãã¿ã³ããŠã³ ã¡ãã»ãŒãžãåä¿¡ãããããéåžžãã¢ããªã±ãŒã·ã§ã³ã¯ããã«ã¯ãªã㯠ã¡ãã»ãŒãžã䜿çšããŠããã¿ã³ããŠã³ ã¡ãã»ãŒãžäžã«éå§ããã¿ã¹ã¯ãæ¡åŒµããŸãã ããšãã°ããŠãŒã¶ãŒã Microsoft ãã€ã³ãã®ã«ã©ãŒ ãã¬ããã§è²ãã¯ãªãã¯ãããšãéžæããè²ããã¬ããã®æšªã«è¡šç€ºãããŸãã ãŠãŒã¶ãŒãè²ãããã«ã¯ãªãã¯ãããšãè²ã衚瀺ããã[è²ã®ç·šé] ãã€ã¢ãã° ããã¯ã¹éããŸãã
éã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãž
ã¯ã©ã€ã¢ã³ãé åãé€ããŠã£ã³ããŠã®ä»»æã®éšåã§ããŠã¹ ã€ãã³ããçºçãããšããŠã£ã³ããŠã¯éã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžãåä¿¡ããŸãã ãŠã£ã³ããŠã®éã¯ã©ã€ã¢ã³ãé åã¯ãå¢çç·ãã¡ãã¥ãŒ ããŒãã¿ã€ãã« ããŒãã¹ã¯ããŒã« ããŒããŠã£ã³ã㊠ã¡ãã¥ãŒãæå°åãã¿ã³ãæå€§åãã¿ã³ã§æ§æãããŸãã
éã¯ã©ã€ã¢ã³ãé åã¡ãã»ãŒãžã¯ãäž»ã«ããèªäœã§äœ¿çšããããã«çæãããŸãã ããšãã°ãã«ãŒãœã« ããã ã¹ãããããŠã£ã³ããŠã®å¢çç·ã«ç§»åãããšãã·ã¹ãã ã¯éã¯ã©ã€ã¢ã³ãé åã¡ãã»ãŒãžã䜿çšããŠã«ãŒãœã«ã 2 æ¹åç¢å°ã«å€æŽããŸãã çµã¿èŸŒã¿ã®ããŠã¹ ã€ã³ã¿ãŒãã§ã€ã¹ãå©çšããã«ã¯ããŠã£ã³ããŠãéã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžã DefWindowProc 颿°ã«æž¡ãå¿ èŠããããŸãã
ã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžããšã«ã察å¿ããéã¯ã©ã€ã¢ã³ãé åããŠã¹ ã¡ãã»ãŒãžããããŸãã ãããã®ã¡ãã»ãŒãžã®ååã¯äŒŒãŠããŸãããéã¯ã©ã€ã¢ã³ãé åã¡ãã»ãŒãžã®ååä»ã宿°ã«ã¯ NC ãšããæåãå«ãŸããŠããç¹ãç°ãªããŸãã ããšãã°ãéã¯ã©ã€ã¢ã³ãé åã§ã«ãŒãœã«ãç§»åãããš WM_NCMOUSEMOVE ã¡ãã»ãŒãžãçæãããã«ãŒãœã«ãéã¯ã©ã€ã¢ã³ãé åã«ãããšãã«ããŠã¹ã®å·Šãã¿ã³ãæŒããšãWM_NCLBUTTONDOWN ã¡ãã»ãŒãžãçæãããŸãã
éã¯ã©ã€ã¢ã³ãé åããŠã¹ ã¡ãã»ãŒãžã® lParam ãã©ã¡ãŒã¿ãŒã¯ãã«ãŒãœã« ããã ã¹ãããã® x 座æšãš y 座æšãå«ãæ§é äœã§ãã ã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžã®åº§æšãšã¯ç°ãªãã座æšã¯ã¯ã©ã€ã¢ã³ã座æšã§ã¯ãªãç»é¢åº§æšã§æå®ãããŸãã ç»é¢åº§æšç³»ã§ã¯ãç»é¢äžã®ãã¹ãŠã®ãã€ã³ãã¯ãç»é¢å·Šäžé ã®åº§æš (0,0) ãåºæºã«ããŠæå®ãããŸãã
wParam ãã©ã¡ãŒã¿ãŒã«ã¯ããããã¹ãå€ãå«ãŸããŠããŸããããã¯ãããŠã¹ ã€ãã³ããçºçããéã¯ã©ã€ã¢ã³ãé åå ã®å Žæã瀺ãå€ã§ãã æ¬¡ã®ã»ã¯ã·ã§ã³ã§ã¯ãããããã¹ãå€ã®ç®çã«ã€ããŠèª¬æããŸãã
WM_NCHITTEST ã¡ãã»ãŒãž
ããŠã¹ ã€ãã³ããçºçãããã³ã«ãã«ãŒãœã«ã®ããã ã¹ããããå«ããŠã£ã³ããŠãŸãã¯ããŠã¹ããã£ããã£ãããŠã£ã³ããŠã®ããããã« WM_NCHITTEST ã¡ãã»ãŒãžãéä¿¡ãããŸãã ã·ã¹ãã ã¯ãã®ã¡ãã»ãŒãžã䜿çšããŠãã¯ã©ã€ã¢ã³ãé åãŸãã¯éã¯ã©ã€ã¢ã³ãé åããŠã¹ ã¡ãã»ãŒãžã®ã©ã¡ããéä¿¡ããããå€å¥ããŸãã ããŠã¹ã®åããšããŠã¹ ãã¿ã³ã®ã¡ãã»ãŒãžãåãåãå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ã¯ãWM_NCHITTEST ã¡ãã»ãŒãžã DefWindowProc 颿°ã«æž¡ãå¿ èŠããããŸãã
WM_NCHITTEST ã¡ãã»ãŒãžã® lParam ãã©ã¡ãŒã¿ãŒã«ã¯ãã«ãŒãœã« ã®ããã ã¹ãããã®ç»é¢åº§æšãå«ãŸããŠããŸãã DefWindowProc 颿°ã¯åº§æšã調ã¹ãããã ã¹ãããã®å Žæã瀺ãããããã¹ãå€ãè¿ããŸãã ããããã¹ãå€ã¯æ¬¡ã®ããããã®å€ã«ãªããŸãã
| å€ | ããã ã¹ãããã®å Žæ |
|---|---|
| HTBORDER | ãµã€ãºå€æŽã®å¢çç·ããªããŠã£ã³ããŠã®å¢çç·å ã |
| HTBOTTOM | ãŠã£ã³ããŠã®äžã®æ°Žå¹³æ¹åã®å¢çç·ã |
| HTBOTTOMLEFT | ãŠã£ã³ããŠã®å¢çç·ã®å·Šäžé ã |
| HTBOTTOMRIGHT | ãŠã£ã³ããŠã®å¢çç·ã®å³äžé ã |
| HTCAPTION | ã¿ã€ãã« ããŒå ã |
| HTCLIENT | ã¯ã©ã€ã¢ã³ãé åå ã |
| HTCLOSE | [éãã] ãã¿ã³å ã |
| HTERROR | ç»é¢ã®èæ¯ãŸãã¯ãŠã£ã³ããŠéã®åå²ç·äž (HTNOWHERE ãšåãã§ããããšã©ãŒã瀺ãã·ã¹ãã ããŒãé³ãçæããDefWindowProc 颿°ä»¥å€)ã |
| HTGROWBOX | ãµã€ãº ããã¯ã¹å (HTSIZE ãšåã)ã |
| HTHELP | [ãã«ã] ãã¿ã³å ã |
| HTHSCROLL | æ°Žå¹³ã¹ã¯ããŒã« ããŒå ã |
| HTLEFT | ãŠã£ã³ããŠã®å·Šã®å¢çç·ã |
| HTMENU | ã¡ãã¥ãŒå ã |
| HTMAXBUTTON | [æå€§å] ãã¿ã³å ã |
| HTMINBUTTON | [æå°å] ãã¿ã³å ã |
| HTNOWHERE | ç»é¢ã®èæ¯ãŸãã¯ãŠã£ã³ããŠéã®åå²ç·äžã |
| HTREDUCE | [æå°å] ãã¿ã³å ã |
| HTRIGHT | ãŠã£ã³ããŠã®å³ã®å¢çç·ã |
| HTSIZE | ãµã€ãº ããã¯ã¹å (HTSIZE ãšåã)ã |
| HTSYSMENU | åãŠã£ã³ããŠã® [ã·ã¹ãã ] ã¡ãã¥ãŒãŸãã¯ã[éãã] ãã¿ã³ã |
| HTTOP | ãŠã£ã³ããŠã®æ°Žå¹³æ¹åã®äžéšå¢çç·å ã |
| HTTOPLEFT | ãŠã£ã³ããŠã®å¢çç·ã®å·Šäžé ã |
| HTTOPRIGHT | ãŠã£ã³ããŠã®å¢çç·ã®å³äžé ã |
| HTTRANSPARENT | çŸåšãåãã¹ã¬ããå ã®å¥ã®ãŠã£ã³ããŠã§ã«ããŒãããŠãããŠã£ã³ããŠå ã |
| HTVSCROLL | åçŽã¹ã¯ããŒã« ããŒå ã |
| HTZOOM | [æå€§å] ãã¿ã³å ã |
ã«ãŒãœã«ããŠã£ã³ããŠã®ã¯ã©ã€ã¢ã³ãé åã«ããå ŽåãDefWindowProc ã¯ãHTCLIENT ããããã¹ãå€ããŠã£ã³ã㊠ããã·ãŒãžã£ã«è¿ããŸãã ãŠã£ã³ã㊠ããã·ãŒãžã£ããã®ã³ãŒããã·ã¹ãã ã«è¿ããšãã«ãŒãœã« ããã ã¹ãããã®ç»é¢åº§æšãã¯ã©ã€ã¢ã³ã座æšã«å€æãããé©åãªã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžããã¹ããããŸãã
DefWindowProc 颿°ã¯ãã«ãŒãœã« ã®ããã ã¹ãããããŠã£ã³ããŠã®éã¯ã©ã€ã¢ã³ãé åã«ããå Žåã«ãä»ã®ããããã¹ãå€ã® 1 ã€ãè¿ããŸãã ãŠã£ã³ã㊠ããã·ãŒãžã£ããããã®ããããã¹ãå€ã®ãããããè¿ããšãã·ã¹ãã ã¯éã¯ã©ã€ã¢ã³ãé åã®ããŠã¹ ã¡ãã»ãŒãžããã¹ãããããããã¹ãå€ãã¡ãã»ãŒãžã® wParam ãã©ã¡ãŒã¿ãŒã«é 眮ããã«ãŒãœã«åº§æšã lParam ãã©ã¡ãŒã¿ãŒã«é 眮ããŸãã
ããŠã¹ ãœããŒ
ããŠã¹ ãœããŒã®ã¢ã¯ã»ã·ããªãã£æ©èœã§ã¯ããŠãŒã¶ãŒã Ctrl ããŒãæŒããŠé¢ããšããã€ã³ã¿ãŒã®åšå²ã«ããã€ãã®åå¿åãç°¡åã«è¡šç€ºãããŸãã ãã®æ©èœã¯ããŠãŒã¶ãŒããç ©éãªç»é¢ãè§£å床ãé«ãèšå®ãããŠããç»é¢ãäœå質ã®ã¢ãã¿ãŒã§ããŠã¹ ãã€ã³ã¿ãŒãèŠã€ããŠãããããŸãã¯èŠèŠéãæã€ãŠãŒã¶ãŒã«ããŠã¹ ãã€ã³ã¿ãŒãèŠã€ããŠãããããã«åœ¹ç«ã¡ãŸãã 詳现ã«ã€ããŠã¯ã次㮠SystemParametersInfo ã®ãã©ã°ãåç §ããŠãã ããã
SPI_GETMOUSESONAR
SPI_SETMOUSESONAR
ããŠã¹ã®æ¶å€±
ããŠã¹ã®æ¶å€±ã¢ã¯ã»ã·ããªãã£æ©èœã¯ããŠãŒã¶ãŒãå ¥åãããšãã«ãã€ã³ã¿ãŒãé衚瀺ã«ããŸãã ãŠãŒã¶ãŒãããŠã¹ãç§»åãããšãããŠã¹ ãã€ã³ã¿ãŒãåã³è¡šç€ºãããŸãã ãã®æ©èœã䜿çšãããšãé»åã¡ãŒã«ããã®ä»ã®ããã¥ã¡ã³ããªã©ã§ããã€ã³ã¿ãŒãå ¥åãããŠããããã¹ããé ãã®ãé²ããŸãã 詳现ã«ã€ããŠã¯ã次㮠SystemParametersInfo ã®ãã©ã°ãåç §ããŠãã ããã
SPI_GETMOUSEVANISH
SPI_SETMOUSEVANISH
ããŠã¹ ãã€ãŒã«
ããŠã¹ ãã€ãŒã«ã¯ããã€ãŒã«ãšããŠã¹ ãã¿ã³ã®æ©èœãçµã¿åããããã®ã§ãã ãã€ãŒã«ã«ã¯ãåçã«ééã空ããåå¥ã®ãããããããŸãã ãã€ãŒã«ãå転ãããéã«ãåããããæŽããããã³ã«ãã¢ããªã±ãŒã·ã§ã³ã«ãã€ãŒã« ã¡ãã»ãŒãžãéä¿¡ãããŸãã ãã€ãŒã« ãã¿ã³ã¯ãéåžžã® Windows äžå€® (3 çªç®) ãã¿ã³ãšããŠåäœããããšãã§ããŸãã ããŠã¹ ãã€ãŒã«ãæŒããŠé¢ããšãæšæºã® WM_MBUTTONUP ãš WM_MBUTTONDOWN ã¡ãã»ãŒãžãéä¿¡ãããŸãã 3 çªç®ã®ãã¿ã³ãããã«ã¯ãªãã¯ãããšãæšæºã® WM_MBUTTONDBLCLK ã¡ãã»ãŒãžãéä¿¡ãããŸãã
ããŠã¹ ãã€ãŒã«ã¯ãWM_MOUSEWHEEL ã¡ãã»ãŒãžãä»ããŠãµããŒããããŸãã
ããŠã¹ãå転ãããšãWM_MOUSEWHEEL ã¡ãã»ãŒãžããã©ãŒã«ã¹ ãŠã£ã³ããŠã«éä¿¡ãããŸãã DefWindowProc 颿°ã䜿çšãããšããŠã£ã³ããŠã®èŠªã«ã¡ãã»ãŒãžãäŒéãããŸãã DefWindowProc ã¯ãåŠçãããŠã£ã³ããŠãèŠã€ãããŸã§èŠªãã§ãŒã³ãäŒããã®ã§ãã¡ãã»ãŒãžã®å éšè»¢éã¯ãããŸããã
ã¹ã¯ããŒã«è¡æ°ã決å®ãã
ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãSystemParametersInfo 颿°ã䜿çšããŠãåã¹ã¯ããŒã«æäœ (ãã€ãŒã«ããã) ã«å¯ŸããŠããã¥ã¡ã³ããã¹ã¯ããŒã«ããè¡æ°ãååŸããå¿ èŠããããŸãã è¡æ°ãååŸããããã«ãã¢ããªã±ãŒã·ã§ã³ã¯æ¬¡ã®åŒã³åºããè¡ããŸãã
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, pulScrollLines, 0)
倿° "pulScrollLines" ã¯ã修食ããŒãªãã§ããŠã¹ ãã€ãŒã«ãå転ãããšãã«ã¹ã¯ããŒã«ããæšå¥šãããè¡æ°ãåãåã笊å·ãªãæŽæ°å€ãæããŸãã
- ãã®æ°å€ã 0 ã®å Žåãã¹ã¯ããŒã«ã¯è¡ãããŸããã
- ãã®æ°ã WHEEL_PAGESCROLLã®å Žåããã€ãŒã« ããŒã«ã¯ã¹ã¯ããŒã« ããŒã®ããŒãžããŠã³é åãŸãã¯ããŒãžã¢ããé åã§ 1 åã¯ãªãã¯ãããšè§£éããå¿ èŠããããŸãã
- ã¹ã¯ããŒã«ããè¡æ°ã衚瀺å¯èœãªè¡æ°ãè¶ ããå Žåã¯ãã¹ã¯ããŒã«æäœãããŒãž ããŠã³æäœãŸãã¯ããŒãž ã¢ããæäœãšããŠè§£éããå¿ èŠããããŸãã
ã¹ã¯ããŒã«è¡æ°ã®æ¢å®å€ã¯ 3 ã§ãã ãŠãŒã¶ãŒãã[ã³ã³ãããŒã« ããã«] ã® [ããŠã¹ã®ããããã£] ã·ãŒãã䜿çšããŠã¹ã¯ããŒã«è¡æ°ã倿Žããå Žåããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã¯ãSPI_SETWHEELSCROLLLINES ãæå®ãããŠãããã¹ãŠã®äžäœã¬ãã«ã®ãŠã£ã³ããŠã« WM_SETTINGCHANGE ã¡ãã»ãŒãžããããŒããã£ã¹ãããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãWM_SETTINGCHANGE ã¡ãã»ãŒãžãåä¿¡ãããšã次ã®åŒã³åºãã«ãã£ãŠæ°ããæ°ã®ã¹ã¯ããŒã«è¡ãååŸã§ããŸãã
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, pulScrollLines, 0)
ã¹ã¯ããŒã«ããã³ã³ãããŒã«
次ã®è¡šã«ãã¹ã¯ããŒã«æ©èœ (ãŠãŒã¶ãŒãèšå®ããã¹ã¯ããŒã«è¡ãå«ã) ãå«ãã³ã³ãããŒã«ã®äžèЧã瀺ããŸãã
| ã³ã³ãããŒã« | ã¹ã¯ããŒã« |
|---|---|
| ç·šéã³ã³ãããŒã« | æ°Žå¹³ããã³åçŽã |
| ãªã¹ã ããã¯ã¹ ã³ã³ãããŒã« | æ°Žå¹³ããã³åçŽã |
| ã³ã³ã ããã¯ã¹ | ããããããŠã³ãããªãå Žåãåã¹ã¯ããŒã«ã¯æ¬¡ã®é ç®ãŸãã¯åã®é ç®ãååŸããŸãã ããããããŠã³ãããšãåã¹ã¯ããŒã«ã¯ã¡ãã»ãŒãžããªã¹ã ããã¯ã¹ã«è»¢éããããã«å¿ããŠã¹ã¯ããŒã«ããŸãã |
| CMD (ã³ãã³ã ã©ã€ã³) | åçŽã |
| ããªãŒ ãã¥ãŒ | æ°Žå¹³ããã³åçŽã |
| ãªã¹ã ãã¥ãŒ | æ°Žå¹³ããã³åçŽã |
| äž/äžã¹ã¯ããŒã« | äžåºŠã« 1 ã€ã®ã¢ã€ãã ã |
| ãã©ãã¯ã㌠ã¹ã¯ããŒã« | äžåºŠã« 1 ã€ã®ã¢ã€ãã ã |
| Microsoft Rich Edit 1.0 | åçŽã Exchange ã¯ã©ã€ã¢ã³ãã«ã¯ããã€ãŒã«ããµããŒãããŠããªãç¬èªã®ããŒãžã§ã³ã®ãªã¹ã ãã¥ãŒãšããªãŒ ãã¥ãŒ ã³ã³ãããŒã«ããããŸãã |
| Microsoft Rich Edit 2.0 | åçŽã |
ãã€ãŒã«ã䜿çšããããŠã¹ã®æ€åº
ãã€ãŒã«ä»ãã®ããŠã¹ãæ¥ç¶ãããŠãããã©ããã確èªããã«ã¯ãSM_MOUSEWHEELPRESENT ã䜿çšããŠãGetSystemMetrics ãåŒã³åºããŸãã TRUE ã®æ»ãå€ã¯ãããŠã¹ãæ¥ç¶ãããŠããããšã瀺ããŸãã
次ã®äŸã¯ãè€æ°è¡ç·šéã³ã³ãããŒã«ã®ãŠã£ã³ã㊠ããã·ãŒãžã£ã®äŸã§ãã
BOOL ScrollLines(
PWNDDATA pwndData, //scrolls the window indicated
int cLinesToScroll); //number of times
short gcWheelDelta; //wheel delta from roll
PWNDDATA pWndData; //pointer to structure containing info about the window
UINT gucWheelScrollLines=0;//number of lines to scroll on a wheel rotation
gucWheelScrollLines = SystemParametersInfo(SPI_GETWHEELSCROLLLINES,
0,
pulScrollLines,
0);
case WM_MOUSEWHEEL:
/*
* Do not handle zoom and datazoom.
*/
if (wParam & (MK_SHIFT | MK_CONTROL)) {
goto PassToDefaultWindowProc;
}
gcWheelDelta -= (short) HIWORD(wParam);
if (abs(gcWheelDelta) >= WHEEL_DELTA && gucWheelScrollLines > 0)
{
int cLineScroll;
/*
* Limit a roll of one (1) WHEEL_DELTA to
* scroll one (1) page.
*/
cLineScroll = (int) min(
(UINT) pWndData->ichLinesOnScreen - 1,
gucWheelScrollLines);
if (cLineScroll == 0) {
cLineScroll++;
}
cLineScroll *= (gcWheelDelta / WHEEL_DELTA);
assert(cLineScroll != 0);
gcWheelDelta = gcWheelDelta % WHEEL_DELTA;
return ScrollLines(pWndData, cLineScroll);
}
break;
ãŠã£ã³ããŠã®ã¢ã¯ãã£ãå
ãŠãŒã¶ãŒãéã¢ã¯ãã£ããªäžäœã¬ãã« ãŠã£ã³ããŠãŸãã¯éã¢ã¯ãã£ããªäžäœãŠã£ã³ããŠã®åãŠã£ã³ããŠãã¯ãªãã¯ãããšãã·ã¹ãã 㯠WM_MOUSEACTIVATE ã¡ãã»ãŒãž (ãã®ä»å ) ãäžäœãŠã£ã³ããŠãŸãã¯åãŠã£ã³ããŠã«éä¿¡ããŸãã ãã®ã¡ãã»ãŒãžã¯ã WM_NCHITTEST ã¡ãã»ãŒãžããŠã£ã³ããŠã«ãã¹ãããåŸããã¿ã³ããŠã³ ã¡ãã»ãŒãžããã¹ãããåã«éä¿¡ãããŸãã WM_MOUSEACTIVATEã DefWindowProc 颿°ã«æž¡ããããšãäžäœã¬ãã«ã®ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ãªãããã¿ã³ããŠã³ ã¡ãã»ãŒãžãäžäœãŠã£ã³ããŠãŸãã¯åãŠã£ã³ããŠã«ãã¹ããããŸãã
WM_MOUSEACTIVATE ãåŠçããããšã§ããŠã£ã³ããŠã¯ãããŠã¹ ã¯ãªãã¯ã®çµæãšããŠäžäœãŠã£ã³ããŠãã¢ã¯ãã£ã ãŠã£ã³ããŠã«ãªããã©ãããããã³ã¯ãªãã¯ããããŠã£ã³ããŠãåŸç¶ã®ãã¿ã³ããŠã³ ã¡ãã»ãŒãžãåä¿¡ãããã©ãããå¶åŸ¡ã§ããŸãã ããã¯ãWM_MOUSEACTIVATE ã®åŠçåŸã«æ¬¡ã®ããããã®å€ãè¿ãããšã«ãã£ãŠè¡ãããŸãã
| å€ | æå³ |
|---|---|
| MA_ACTIVATE | ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ããããŠã¹ ã¡ãã»ãŒãžãç Žæ£ããªãã |
| MA_NOACTIVATE | ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ãããããŠã¹ ã¡ãã»ãŒãžãç Žæ£ããªãã |
| MA_ACTIVATEANDEAT | ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ããããŠã¹ ã¡ãã»ãŒãžãç Žæ£ããã |
| MA_NOACTIVATEANDEAT | ãŠã£ã³ããŠãã¢ã¯ãã£ãã«ããªããããŠã¹ ã¡ãã»ãŒãžãç Žæ£ããã |