サンプルプログラム2−2
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実行結果

|