Windowsでマウスクリックが動いている
諏訪子 <suwako@076.moe>、2026-05-03 19:44
コミット b510b2830f1f9d273c790a512e22ec7d705d2a36
・親 8fa73f9
・ファイルを見る
1個のファイル、+17 -4
| @@ -102,7 +102,13 @@ | ||
| 102 | 102 | start_color(); |
| 103 | 103 | |
| 104 | 104 | // マウス対応 |
| 105 | +#ifdef _WIN32 | |
| 106 | + mousemask(ALL_MOUSE_EVENTS, nullptr); | |
| 107 | + mouse_set(ALL_MOUSE_EVENTS); | |
| 108 | + request_mouse_pos(); | |
| 109 | +#else | |
| 105 | 110 | mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, nullptr); |
| 111 | +#endif | |
| 106 | 112 | isMouse = true; |
| 107 | 113 | |
| 108 | 114 | init_pair(1, COLOR_BLACK, COLOR_WHITE); // カーソル |
| @@ -764,17 +770,24 @@ | ||
| 764 | 770 | |
| 765 | 771 | void HexEditor::handleMouse() { |
| 766 | 772 | #ifdef _WIN32 |
| 767 | - if (getmouse() == 0) return; | |
| 773 | + request_mouse_pos(); | |
| 768 | 774 | |
| 769 | 775 | int mx = Mouse_status.x; |
| 770 | 776 | int my = Mouse_status.y; |
| 771 | 777 | |
| 772 | - if (!(Mouse_status.button[0] & BUTTON1_PRESSED) | |
| 773 | - || (Mouse_status.changes & 0x01)) return; | |
| 778 | + bool click = false; | |
| 779 | + for (int i = 0; i < 3; ++i) { | |
| 780 | + if ((Mouse_status.button[i] & BUTTON1_PRESSED) | |
| 781 | + || (Mouse_status.button[i] & BUTTON1_CLICKED)) { | |
| 782 | + click = true; | |
| 783 | + break; | |
| 784 | + } | |
| 785 | + } | |
| 786 | + if (!click) return; | |
| 774 | 787 | #else |
| 775 | 788 | MEVENT event; |
| 776 | 789 | if (getmouse(&event) != OK) return; |
| 777 | - if (!(event.bstate & BUTTON1_PRESSED)) return; | |
| 790 | + if (!(event.bstate & (BUTTON1_PRESSED | BUTTON1_CLICKED))) return; | |
| 778 | 791 | |
| 779 | 792 | int mx = event.x; |
| 780 | 793 | int my = event.y; |