샘플 프로젝트 중 'Sample02_ImageViewer'



#include <Windows.h>

#include <balor/graphics/all.hpp>

#include <balor/gui/all.hpp>


using namespace balor::graphics;

using namespace balor::gui;



int APIENTRY WinMain(HINSTANCE , HINSTANCE , LPSTR , int ) 

{

Frame frame(L"ImageViewer");

Bitmap bitmap;


typedef Menu::ItemInfo Item;

Item fileMenuItems[] = {

Item(L"열기(&O)\tCtrl+O", Key::Modifier::ctrl | Key::o),

Item(),

Item(L"종료(&X)\tAlt+F4", Key::Modifier::alt | Key::f4)

};

Item menuBarItems[] = {

Item(L"파일(&F)", fileMenuItems),

Item(L"도움말(&H)", [&] (Menu::Click& ) { MsgBox::show(L"Image Viewer Ver 1.0", L"버전 정보"); })

};

MenuBar menuBar(menuBarItems);

frame.menuBar(&menuBar);


frame.onShortcutKey() = [&] (Frame::ShortcutKey& e) {

switch (e.shortcut()) {

case Key::Modifier::ctrl | Key::o : {

OpenFileDialog dialog;

dialog.filter(L"그림 파일\n*.bmp;*.gif;*.png;*.jpg;*.jpeg;*.tiff\n\n");

if (dialog.show(frame)) {

bitmap = Bitmap(dialog.filePath());

if (bitmap != nullptr) {

frame.scrollMinSize(bitmap.size()); // 윈도우 사이즈가 그림 사이즈보다 작으면 스크롤 할 수 있도록 한다

frame.invalidate();

}

}

e.handled(true);

} break;

case Key::Modifier::alt | Key::f4 : {

frame.close();

e.handled(true);

} break;

}

};

frame.onPaint() = [&] (Frame::Paint& e) {

e.graphics().clear();

if (bitmap != nullptr) {

Graphics bitmapGraphics(bitmap);

e.graphics().copy(frame.scrollPosition(), bitmapGraphics); // 스크롤을 빼고 이미지를 복사한다.

}

};


frame.runMessageLoop();

return 0;

}




저작자 표시
신고
by 흥배 2014.09.01 08:00

Sample 프로젝트 중 Sample01_ButtonAndEvent


#include <Windows.h>

#include <balor/gui/all.hpp>


using namespace balor::gui;



int APIENTRY WinMain(HINSTANCE , HINSTANCE , LPSTR , int ) 

{

Frame frame(L"ButtonAndEvent");


// 버튼 생성

Button button0(frame, 10, 10, 100, 50, L"button0");

// 버튼 클릭 이벤트 설정

button0.onClick() = [&] (Button::Click& ) {

MsgBox::show(L"button0 clicked");

};

// 버튼 생성하면서 클릭이벤트도 설정

Button button1(frame, 10, 80, 100, 50, L"button1", [&] (Button::Click& ) {

MsgBox::show(L"button1 clicked");

});


frame.runMessageLoop();

return 0;

}







저작자 표시
신고
by 흥배 2014.08.29 08:00

Samples 디렉토리에 있는 Saple00_Hello_world 프로젝트 


#include <Windows.h>

#include <balor/gui/all.hpp>


using namespace balor::gui;



int APIENTRY WinMain(HINSTANCE , HINSTANCE , LPSTR , int ) 

{

// 메인 윈도우를 만들고, 타이틀 이름을 "Hello world"로 설정

Frame frame(L"Hello world");


// Win32의 OnPaint 메시지에서 20,10 좌표에 "Hello world"를 출력

frame.onPaint() = [&] (Frame::Paint& e) {

e.graphics().drawText(L"Hello world", 20, 10);

};


// Win32 메시지 처리

frame.runMessageLoop();


return 0;

}






저작자 표시
신고
by 흥배 2014.08.28 08:00

balor ?

일본의 syanji 라는 분이 만든 C++ Windows GUI 라이브러리.

 사이트 http://d.hatena.ne.jp/syanji/archive

balor은 Java나 .NET과 같이 사용하기 쉽고, MFC와 같이 Win32 API와 연동하기 쉬운 라이브러리를 목표로 한다.

라이센스: 비 상용, 상용 상관없이 사용할 수있다.

코드는 http://d.hatena.ne.jp/syanji/20110815/1313411983


위 코드를 받아서 VS2013에서 빌드를 하면 빌드 실패가 발생하고, 주석이 일본어로 되어 있어서 일부는 번역을 했고 나머지는 파일 인코딩 형식을 utf-8로 바꾸어서 제대로 나오게 했다. 일본어 주석은 앞으로 조금씩 번역해 나갈 예정이며, 번역되지 않은 부분은 네이버나 구글 번역을 사용하기 바란다.

본인이 포팅한 소스는 https://github.com/jacking75/balor-chb



balor의 특징

.NET이나 Java와 비슷한 인터페이스.

Win32 API나 STL과 연동하기 쉽다.

람다식으로 이벤트 기술.

스태틱 링크 라이브러리.

우측값참조 지원에 의해 인스턴스 생성에 동적메모리 할당을 강요하지 않는다.



balor의 기능

GUI 라이브러리

File 패스

레지스트리

COM

DLL

Local

등등



balor 이름공간

balor: balor 구현의 근간이 되는 클래스 군

balor::Convert: 기본 데이터 형과 String 형의 변환

balor::graphics: 그래픽스(GDI) 관련

balor::gui: GUI 관련 클래스 군

  GUI 부품(버튼이나 에디터 컨트롤 이나 스크롤바 등) 클래스가 정의 되어 있다.

  balor::gui::Control

    컨트롤 기본 클래스

    balor에서는 Windows 라는 클래스는 정의 되어 있지 않다.

    Button 클래스나 Edit 클래스, 그리고 이것들의 부모 윈도우가 되느 Frame 클래스도 모두 Control에서 파생하고 있다.

    이들 컨트롤을 조합해서 화면을 만든다

  balor::gui::Frame

    탑 레벨로 다른 컨트롤의 프레임이 되는 윈도우를 나타내는 클래스

    balor::gui::Control에서 파생하고 있다.

balor::io: I/O 관련 클래스 군

balor::locale: 로케일이나 캐릭터셋

balor::system: 시스템이나 환경, OS

balor::test: 유닛테스트나 디버그 관련



코드예 

Control ctrl;

ctrl.clientSize(400, 400); // 윈도우 사이즈 설정


bool visible = ctrl.visible() // 표시 상태를 취득


ctrl.onMouseDown() = [](Control::MouseDown &e) {

                 //

            };





저작자 표시
신고
by 흥배 2014.08.25 08:00
| 1 |

티스토리 툴바