2010年9月11日土曜日

2010年9月9日木曜日

gtkmmで動的にウィジェットを追加する

参考:
gtkmm-2.4のソースコードのなかにあるexamples/stock
gtkmm_helloのソースコード(時間短縮のために流用)

#ifndef GTKMM_HELLO_H
#define GTKMM_HELLO_H

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

class GtkmmHello : public Gtk::Window
{
public:
  GtkmmHello();
  virtual ~GtkmmHello();
  void on_button_clicked(Gtk::VBox* vb);

};

#endif //GTKMM_HELLO_H


GtkmmHello::GtkmmHello()
{
  set_title("gtkmm_hello");
  set_border_width(10);

  //manageを使わないとsegmentation faultになる
  Gtk::Button* m_Button = manage(new Gtk::Button("click"));
  Gtk::VBox* vb = manage(new Gtk::VBox(false, 0));
  m_Button->signal_clicked().connect(sigc::bind(
      sigc::mem_fun(*this, &GtkmmHello::on_button_clicked), vb));
  
  vb->pack_start(*m_Button, false, false, 0);
  add(*vb);
  show_all();
}

GtkmmHello::~GtkmmHello()
{
}

void GtkmmHello::on_button_clicked(Gtk::VBox* vb)
{
  Gtk::Button* b = new Gtk::Button("new button");
  b->show();
  vb->pack_start(*b, false, false, 0);
  std::cout << "test" << std::endl;
}

int main (int argc, char *argv[])
{
  Gtk::Main kit(argc, argv);
  GtkmmHello window;
  Gtk::Main::run(window);
  return 0;
}

これが










こうなる

2010年9月6日月曜日

C++でURLをデコードする

#include <iostream>
#include <cstdlib>

int main(){
  char* enc = "40";//%40は@になる
  char* end;
  unsigned long ascii = 0;
  ascii = std::strtoul(enc, &end, 16);
  char dec = (char)ascii;
  std::cout << dec << std::endl;
  
  return 0;
}

2010年9月1日水曜日

HTC desire を買った

キャンセルが出てたまたま余った一台を発見し、勢いで買ってしまった。

今年中は忙しくて、androidプログラミングなんてしてる時間ないんだから別に今買う必要は無かった気がしないでもない。