Visual C++ 2008 Express Editionでビルドしてみました。 公式サイトに載っている入門プログラムとほぼ同じです。
アルファベットを表示するために、公式サイトのThe basics of Guichan - Guichan(リンク切れになっていたらご容赦)にあるfixedfont.pngをfixedfont.bmpという名前で保存して実行ファイルと同じ場所に置きます。 日本語に関しては多分サポートしてないので私は日本語は自力で表示するつもりです。
#include <iostream> #include <guichan.hpp> #include <guichan/sdl.hpp> #include "SDL.h" SDL_Surface* screen; SDL_Event event; gcn::SDLInput* input; gcn::SDLGraphics* graphics; gcn::SDLImageLoader* imageLoader; gcn::Gui* gui; gcn::Container* top; gcn::ImageFont* font; gcn::Label* label; gcn::Button* button; gcn::Window* window; void init() { SDL_Init(SDL_INIT_VIDEO); screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); SDL_EnableUNICODE(1); SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); imageLoader = new gcn::SDLImageLoader(); gcn::Image::setImageLoader(imageLoader); graphics = new gcn::SDLGraphics(); graphics->setTarget(screen); input = new gcn::SDLInput(); font = new gcn::ImageFont("fixedfont.bmp", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); gcn::Widget::setGlobalFont(font); gui = new gcn::Gui(); gui->setGraphics(graphics); gui->setInput(input); top = new gcn::Container(); top->setDimension(gcn::Rectangle(0, 0, 640, 480)); gui->setTop(top); window = new gcn::Window("Hello Window"); window->setPosition(120, 120); top->add(window); label = new gcn::Label("Hello World"); label->setPosition(0, 0); window->add(label); button = new gcn::Button("Button1"); button->setPosition(32, 120); button->setBaseColor(gcn::Color(255,255,255)); window->add(button); window->resizeToContent(); } void run() { bool running = true; while (running) { while(SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN) { if (event.key.keysym.sym == SDLK_ESCAPE) { running = false; } } else if(event.type == SDL_QUIT) { running = false; } input->pushInput(event); } gui->logic(); gui->draw(); SDL_Flip(screen); } } void halt() { delete button; delete label; delete window; delete font; delete top; delete gui; delete input; delete graphics; delete imageLoader; SDL_Quit(); } int main(int argc, char **argv) { try { init(); run(); halt(); } catch (gcn::Exception e) { std::cout << e.getMessage() << std::endl; } catch (std::exception e) { std::cout << "Std exception: " << e.what() << std::endl; } catch (...) { std::cout << "Unknown exception" << std::endl; } return 0; } |
実行するとこうなります。