質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

0回答

773閲覧

「コンソールアプリ」マウスクリックを受け付けるエスケープシーケンスコードが知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/09/12 01:21

編集2021/09/13 07:33

###やりたい事
マウスのクリックイベントを実装するためのエスケープシーケンスコードが知りたい。

###質問内容
マウスの座標を取得を有効化する方法は下記のコードで実装したのですがマウスのクリックイベント実装する方法が知りたいです。
※提示コードは Entry.cpp内でEditクラスを利用しています。

###調べたこと
参考サイトA: https://teratail.com/questions/358815
参考サイトB: https://ja.osdn.net/projects/drdeamon64/wiki/12.%E3%83%9E%E3%82%A6%E3%82%B9%E6%93%8D%E4%BD%9C
参考サイトC: https://kmiya-culti.github.io/RLogin/ctrlcode.html#OPT

###環境
OS: ubuntu 64ビット
利用ライブラリ:ncurses

cpp

1#include <string.h> 2#include <iostream> 3#include <fstream> 4#include <memory> 5#include "../lib/ncurses/include/curses.h" 6 7#include "../header/Entry.hpp" 8 9 10 11int main() 12{ 13 14 std::cout<<"\033[?1003h\n"; //マウス座標を有効化 15 initscr(); //初期化 16 17 noecho(); //入力した文字を非表示 18 cbreak(); //Enterキー不要のキー入力 19 keypad(stdscr,TRUE); // 特殊キーを有効化 20 mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION | BUTTON1_CLICKED | BUTTON1_PRESSED ,NULL); // マウスイベントを取得 21 22 std::unique_ptr<Entry> entry = std::make_unique<Entry>(); //Entry 23 24 while (true) 25 { 26 entry->Update(); //更新 27 entry->Renderer(); //描画 28 29 if(entry->getChangeScene() == Scene::SceneType::Exit) 30 { 31 break; 32 } 33 } 34 35 36 std::cout<<"\033[?1003l\n"; //マウス座標を無効化 37 endwin(); //終了 38 39 return 0; 40} 41

cpp

1//計算 2void Edit::Update() 3{ 4 5 int key = getch(); 6 if(getmouse(&event) == OK) 7 { 8 if(event.bstate & REPORT_MOUSE_POSITION) 9 { 10 mousePosition.x = event.x; 11 mousePosition.y = event.y; 12 } 13 14 if(event.bstate & BUTTON1_PRESSED) 15 { 16 std::cout<<"あああ"<<std::endl; 17 file << "BUTTON1_CLICKED"<<std::endl; 18 } 19 20 } 21 22 23 24 25 26 27 28 //ESCで終了 29 if(key == 27) 30 { 31 changeScene = Scene::SceneType::Exit; 32 file.close(); 33 } 34} 35 36//描画 37void Edit::Renderer()const 38{ 39 erase(); 40 move(mousePosition.y,mousePosition.x); 41 42// addstr("AAAA"); 43 44 45 46 47 48 refresh(); 49} 50

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/09/13 02:20

参考サイトBに書いてあることは試したのですか?
退会済みユーザー

退会済みユーザー

2021/09/13 02:29

当然試しました。
int32_t

2021/09/13 02:33

では試したコードを質問文に書いてください。現状のコードは getch() も getmouse() もないのですから、動くわけないではないですか。
退会済みユーザー

退会済みユーザー

2021/09/13 07:33

提示コードを修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問