トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Win32API
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ チュートリアル


  SAMPLE
     シンプルウィンドウ サンプル 

___

■ ウィンドウをつくる

おおまかには次の流れになる
  // 擬似コード
  int main() {

      // Window の種類とメッセージに対する処理内容を登録
      registerClass();

      // 登録した Window をつくる
      HWND hWnd = CreateWindow();

      // メッセージループ
      while ( true ) {
        GetMessage();
        DispatchMessage();
      }
      
      return 0;
  }

___

■ Windowクラスの登録

最低限必要なのは以下の設定。 WNDCLASS構造体型変数 に登録する SYNTAX ATOM RegisterClass( const WNDCLASS *wndCls ); ( typedef WORD ATOM ) cs.dwExStyle = WS_EX_LAYERED | WS_EX_TRANSPARENT; SetLayeredWindowAttributes POINT window procedure は [ window 内 ]で発生したイベント( 入力 )を処理する関数 callback を呼び出すのは WINDOWS

// シンプルなウィンドウを登録
ATOM  registerClass()
{
  WNDCLASSEX cls;

  //
  cls.cbSize = sizeof(WNDCLASSEX);

  //  CS_HREDRAW( リサイズ時の 再描画 )
  cls.style     = CS_HREDRAW | CS_VREDRAW;

  // WindowProcedure の指定
  //  DefWindowProc を指定する。
  cls.lpfnWndProc = WndProc;


  // 予約領域( byte サイズ )はいらない
  cls.cbClsExtra    = 0;
  cls.cbWndExtra    = 0;
  cls.hInstance   = NULL;


  // window 上部の Icon Object のハンドル( LoadIcon() で Resource から読む )
  // ICON, Cursor の指定なし
  cls.hIcon     = NULL;
  cls.hCursor   = NULL;

  // pointer の値を代入しているのか
  //   背景色の指定 ブラシオブジェクト
  cls.hbrBackground = (HBRUSH)(17);

  // Menu の指定もなし
  cls.lpszMenuName  = NULL;

  // 登録するクラス名を MyWindow にする
  // ウィンドウクラスの名前
  cls.lpszClassName = "MyWindow";

  cls.hIconSm   = LoadIcon(0, IDI_WINLOGO);

  // 登録
  return RegisterClassEx(&cls);
}

      ATOM registerClass(HINSTANCE hInst)
      {
          WNDCLASSEX c;

          c.cbSize = sizeof(WNDCLASSEX);

          c.style     = CS_HREDRAW | CS_VREDRAW;
          c.lpfnWndProc = WndProc;
          c.cbCExtra    = 0;
          c.cbWndExtra    = 0;
          c.hInstance   = hInst;
          //c.hIcon     = LoadIcon(hInst, MAKEINTRESOURCE(IDI___TPLVC__));
          c.hIcon     = LoadIcon(0, IDI_APPLICATION);
          c.hCursor   = LoadCursor(NULL, IDC_ARROW);
          c.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
          c.lpszMenuName  = MAKEINTRESOURCE(IDC___TPLVC__);
          c.lpszClassName = strWndCls;
          //cls.hIconSm   = LoadIcon(c.hInstance, MAKEINTRESOURCE(IDI_SMALL));
          c.hIconSm   = LoadIcon(0, IDI_WINLOGO);

          // 登録
          return RegisterClassEx(&cls);
      }

___

■ Window.をつくる

SYNTAX HWND CreateWindow( LPCTSTR classname, // registerClass で登録したクラス名 LPCTSTR name, // タイトルバーに表示される文字 DWORD style, // WS_OVERLAPPEDWINDOW いつもの int x, y, w, h, // 位置と大きさ HWND hParent, // 親Window HMENU hMenu , HANDLE hInst, // このプロセスのハンドル LPVOID lpParam // LPVOID CREATESTRUCT::lpCreateParams にわたす 付加的なメモリ領域 );
    CreateWindow(

    // 登録したクラス名, タイトル
     "MyWindow", "Title",

    // Window スタイル(見た目) ( WS_VISIBLE で表示 )
    // WS_OVERLAPPEDWINDOW で通常のウィンドウになる。
     WS_OVERLAPPEDWINDOW | WS_VISIBLE,

    // 表示位置 と 大きさ
     0, 0, 600, 400,

    // 親とメニューの指定はなし。
    NULL,  NULL,
    hInst, 
    NULL);


NINJAIDX 17