BCC32Cを使ってみた 本文へジャンプ

サンプルプログラム2−2

Windowsプログラム

2-2)sample_202(Dialog sample プログラム)
Dialog アプリのプログラムのサンプルプログラムです。@がソース・プログラムです、注意する箇所にはコメント入れています。
リソースは、リソースエディタで作成します。(フリーソフトの利用、4)リソーエディター(RisohEditor)参照)Aが作成したリソースです。
コンパイル結果がBで、実行結果がCとなります。

@ソースプログラム

// -------------------------------------------------
// dialog.c
//    ダイアログプログラム テンプレート
//               2022/03/18 Kimio Nakamura
// -------------------------------------------------

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


// ------ prototype ------------------------

INT_PTR CALLBACK DialogProc( HWND , UINT , WPARAM  ,LPARAM );
BOOL OnInitDialog(HWND  , HWND  , LPARAM );
void OnCommand( HWND , int  , HWND  , UINT );

// =========================================================================
//   Name     : int WINAPI WinMain( HINSTANCE , HINSTANCE , LPSTR , INT )
//   Usage    : WinMain 関数  DialogBoxマクロでダイアログボックスを作成する。
//   Parameter: インスタンス、ダイアログリソース名、親ウインドウ:NULL、
//                                                ダイアログプロシージャ名
//   Return   : 0
// =========================================================================
    
int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance, 
                                    LPSTR lpCmdLine, INT nCmdShow)
{

    InitCommonControls();

    DialogBox(hInstance , MAKEINTRESOURCE(1), NULL, DialogProc);

    return 0;
}

// =========================================================================
//   Name     : INT_PTR CALLBACK DialogProc( HWND , UINT , WPARAM  ,LPARAM )
//   Usage    : ダイアログ・プロシージャ 関数
//   Parameter: 
//   Return   : 
// =========================================================================
INT_PTR CALLBACK DialogProc( HWND hwnd , UINT uMsg , 
                                    WPARAM wParam ,LPARAM lParam)
{

    switch(uMsg){

        HANDLE_MSG( hwnd , WM_INITDIALOG , OnInitDialog);
        HANDLE_MSG( hwnd , WM_COMMAND , OnCommand);
    
    }
    return 0;
}

// =========================================================================
//   Name     : BOOL OnInitDialog(HWND , HWND , LPARAM )
//   Usage    : ダイアログ、初期化
//   Parameter: 
//   Return   : 
// =========================================================================
BOOL OnInitDialog(HWND hwnd , HWND hwndFocus , LPARAM lParam)
{
    return TRUE;
}


// =========================================================================
//   Name     : void OnCommand( HWND , int , HWND  , UINT )
//   Usage    : ダイアログ内のコマンド処理
//   Parameter: 
//   Return   : 
// =========================================================================
void OnCommand( HWND hwnd , int id , HWND hwndCtl , UINT codeNotify)
{

    switch (id){
        case IDOK:
        
        case IDCANCEL:
        
            EndDialog( hwnd , id);
            break;
    }
}

Aリソース
// sample_202_res.rc
// This file is automatically generated by RisohEditor.
// † <-- This dagger helps UTF-8 detection.

#define APSTUDIO_HIDDEN_SYMBOLS
#include <windows.h>
#include <commctrl.h>
#undef APSTUDIO_HIDDEN_SYMBOLS
#pragma code_page(65001) // UTF-8

//////////////////////////////////////////////////////////////////////////////

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

//////////////////////////////////////////////////////////////////////////////
// RT_DIALOG

1 DIALOG 0, 0, 215, 135
CAPTION "DialogSkelton"
STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
FONT 9, "MS UI Gothic"
{
    DEFPUSHBUTTON "OK", IDOK, 35, 115, 60, 14
    PUSHBUTTON "キャンセル", IDCANCEL, 115, 115, 60, 14
}

//////////////////////////////////////////////////////////////////////////////
// TEXTINCLUDE

#ifdef APSTUDIO_INVOKED

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE
BEGIN
    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include <windows.h>\r\n"
    "#include <commctrl.h>\r\n"
    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "\0"
END

3 TEXTINCLUDE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

//////////////////////////////////////////////////////////////////////////////

Bコンパイル結果


C実行結果


戻る