win32++とはなんぞや

Win32++: A Simple Alternative to MFC.
なんだろうこれ
とりあえず使ってみた
あ、環境はVS2010でUNICODEでっす。環境によってはL""をTEXT("")とかにするとかSetWindowText()にするとか
つーかヘルプに書いてあるこれ↓うごかんだろ・・・

//ページ:"CWinApp Class"
return WndProcDefault(hWnd, uMsg, wParam, lParam);

ほぼサンプルからコピペ

#include "win32pp\wincore.h"

class CView : public CWnd
{
public:
 CView() {}
 virtual ~CView() {}
 virtual LRESULT WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
  switch (uMsg)
  {
  case WM_DESTROY:
   //End the program when window is destroyed
   ::PostQuitMessage(0);
   break;
  }

  //Use the default message handling for remaining messages
  return WndProcDefault(uMsg, wParam, lParam);
 }
};


int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
 // Start Win32++
 CWinApp MyApp;

 // Create our view window
 CView m_View;
 m_View.Create();

 // Run the application
 return MyApp.Run();
}

ボタンつけてみる

#include "win32pp/stdcontrols.h"
#include "win32pp/wincore.h"

class HelloBtn : public CButton
{
public:
 virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam)
 {
  switch (HIWORD(wParam))
  {
   case BN_CLICKED: MessageBox(L"Hello World!", L"hello", MB_OK); return TRUE;
  };
  return FALSE;
 }
};

class CView : public CWnd 
{
 HelloBtn testBtn1;
public:
 CView() {}
 virtual ~CView() {}
 virtual LRESULT WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
  switch (uMsg)
  {
  case WM_DESTROY:
   //End the program when window is destroyed
   ::PostQuitMessage(0);
   testBtn1.Destroy();
   break;
  }

  //Use the default message handling for remaining messages
  return WndProcDefault(uMsg, wParam, lParam);
 }
 virtual void OnCreate()	//いにしゃる
 {
  testBtn1.Create(this->m_hWnd);
  testBtn1.MoveWindow(10,10,100,100);
  testBtn1.SetWindowTextW(L"test");
 }
};
//mainは略

てきとーに書いたけど動いた!わりと便利かも!

MinGWコンパイルする場合

リンクエラーがでるので、libgdi32.aをリンクしてやる

>g++ hoge.cpp -lgdi32

あと、その名の通りx86でしか動かないのでx64環境の人は-m32をつけましょう

>g++ hoge.cpp -m32 -lgdi32

ライセンスはMIT

C++GUIやってみたいけど、Qtとかライセンス的にどうよとか、wxWidgetsとかうーんとか、stdafx.hとかメッセージディスパッチャとかキモいんですけど・・・な人が対象だろうか
あとは軽いよとか

広告を非表示にする