内容

更新日: 2005/10/15
バージョン: gtkmm24

■ 概要
■ ソース
■ コンパイル
■ 結果

TOP

マウスクリックイベントの検出

概要

ウィンドウのクライアント領域をクリックしたことを検出する。

Gtk::Windowはデフォルトではクリックイベントを監視していないため add_events( Gdk::BUTTON_PRESS_MASK ) によって監視イベントを追加する必要がある。 あとは Gtk::Window::on_button_press_event()をオーバロードするとクリックするたびに Gtk::Window::on_button_press_event()が呼び出される。

ソース

mclick

#include <gtkmm.h>
#include <iostream>

class MainWin : public Gtk::Window
{
public:
    MainWin();

protected:
    virtual bool on_button_press_event( GdkEventButton* event );
};

MainWin::MainWin()
{
    // OFFになってるイベントを追加
    add_events( Gdk::BUTTON_PRESS_MASK );
}

// マウスクリック
bool MainWin::on_button_press_event( GdkEventButton* event )
{
    std::cout << "click\n";
    return true;
}

int main( int argc, char *argv[] )
{
    Gtk::Main kit( argc, argv );
    MainWin mainwin;
    Gtk::Main::run( mainwin );

    return 0;
}

コンパイル

必要なコンパイルオプションは pkg-config を使って取得する。

g++ mclick.cpp -o mclick `pkg-config gtkmm-2.4 --cflags --libs`

結果

実行してクライアント領域をクリックする度に端末にclickと表示される