スケルトンコード
(ストレート)
[index] [プレーン] [ストレート] [3大要素] [修正を要する箇所] [一行解説] [詳細]  

 

 [プレーン] のところの、関数 InitApp()InitWnd() を展開して、かんすうを取り払い、必要な処理をストレートに並べたものです。処理内容は全く同質です。

 とりはらった2つの関数の "プロトタイプ宣言" が削除されたほかは、メッセージループ、"WndProc" には変更はありません。

 色分けは、次の [3大要素] の説明に対応。


   
//
// program "basecode.cpp"
// bcc32 -tW basecode.cpp


  #define _WIN32_WINNT 0x400
  #define  WINVER      0x400
  #define _WIN32_IE    0x0501

//#define WIN32_LEAN_AND_MEAN
  #define STRICT


  #include <windows.h>
  #include <windowsx.h>
  #include <commctrl.h>
  #include <commdlg.h>


LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;


HINSTANCE hAppInst ;


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hInst_prev,
                    LPSTR lpszCmdLine, int nCmdShow )
{
    BOOL ret ; MSG msg ;

    if ( ! hInst_prev )
    {
          WNDCLASS wc ;
          wc.style         = CS_HREDRAW | CS_VREDRAW ;
          wc.lpfnWndProc   = WndProc ;
          wc.cbClsExtra    = 0 ;
          wc.cbWndExtra    = 0 ;
          wc.hInstance     = hInstance ;
          wc.hIcon   = ( HICON )   LoadIcon  ( NULL, IDI_APPLICATION ) ;
          wc.hCursor = ( HCURSOR ) LoadCursor( NULL, IDC_ARROW ) ;
          wc.hbrBackground = ( HBRUSH ) GetStockObject( LTGRAY_BRUSH ) ;
          wc.lpszMenuName  = "MYMENU" ;
          wc.lpszClassName = ( LPCTSTR ) "MyApp_Classification_1" ;

          hAppInst = hInstance ;

          if( ! RegisterClass( &wc )) return FALSE ; //  InitApp()
     }

     {
          HWND hWnd ;
               hWnd = CreateWindow(
                  (LPCTSTR) "MyApp_Classification_1",
                  (LPCTSTR) "My Project",
                  WS_OVERLAPPEDWINDOW,
                  CW_USEDEFAULT, CW_USEDEFAULT ,
                  CW_USEDEFAULT, CW_USEDEFAULT ,
                  NULL, NULL, hInstance,
                  NULL ) ;
           if ( ! hWnd ) return FALSE ; //  InitWnd()

           ShowWindow( hWnd, nCmdShow ) ; UpdateWindow( hWnd ) ;
           SetFocus( hWnd ) ;
     }


     while ( 0 != ( ret = GetMessage( &msg, NULL, 0, 0 )))
     {
         if ( ret != -1 ) {
            TranslateMessage( &msg ) ;
             DispatchMessage( &msg ) ;
         }
     }

     return ( msg.wParam ) ;
}
 

LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
      switch( msg )
      {
           case WM_CREATE :
           break ;

           case WM_COMMAND :
                switch( LOWORD( wParam ))
                {
                   default :
                   return( DefWindowProc( hWnd, msg, wParam, lParam )) ;
                }
           break ;
           case WM_CLOSE :
                  DestroyWindow( hWnd ) ;
           break ;
           case WM_DESTROY :
                  PostQuitMessage( 0 ) ;
           break ;
           default :
                  return( DefWindowProc( hWnd, msg, wParam, lParam )) ;
      }

      return 0L ;
}

 


 

[level4] [トップ] [戻る]