Windowsでマウスクリックが動いている

諏訪子 <suwako@076.moe>、2026-05-03 19:44
コミット b510b2830f1f9d273c790a512e22ec7d705d2a36 ・親 8fa73f9 ・ファイルを見る

1個のファイル、+17 -4

@@ -102,7 +102,13 @@
102102 start_color();
103103
104104 // マウス対応
105+#ifdef _WIN32
106+ mousemask(ALL_MOUSE_EVENTS, nullptr);
107+ mouse_set(ALL_MOUSE_EVENTS);
108+ request_mouse_pos();
109+#else
105110 mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, nullptr);
111+#endif
106112 isMouse = true;
107113
108114 init_pair(1, COLOR_BLACK, COLOR_WHITE); // カーソル
@@ -764,17 +770,24 @@
764770
765771 void HexEditor::handleMouse() {
766772 #ifdef _WIN32
767- if (getmouse() == 0) return;
773+ request_mouse_pos();
768774
769775 int mx = Mouse_status.x;
770776 int my = Mouse_status.y;
771777
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;
774787 #else
775788 MEVENT event;
776789 if (getmouse(&event) != OK) return;
777- if (!(event.bstate & BUTTON1_PRESSED)) return;
790+ if (!(event.bstate & (BUTTON1_PRESSED | BUTTON1_CLICKED))) return;
778791
779792 int mx = event.x;
780793 int my = event.y;