誰でもダイアログアプリケーション :【VC++】


ブラウザでダウンロード

lightbox.lib で簡単に作成
Visual Studio 2005 の Express では、SDK を別途ダウンロードして
インストールする必要がありますが、通常環境があれば、Visual Studio を
動かさなくともダイアログアプリケーションを作成できます。

ダイアログリソースの作成は、GUI でフリーで作成できる XNResourceEditor 3.0.0.1 
を使用します( こちらを参照 )
※ Visual Studio 2005 Express Edition のフリーインストールに関しては、こちら を参照して下さい

lightbox.lib の機能をいろいろ使っていますが、このスケルトン以上の部分は、
普通に Win32 API で追加して作成できます。

このダイアログは、タスクバーにも表示されますし、最小化も可能です。
XNResourceEditor を変更する事によって、コントロールを追加できますし、
アイコンも変更できます。

リソースの扱いは、XNResourceEditor で割り振られた番号を直接使用します。
これは本来のWin32API の普通のやり方で、マクロを使用していないだけです。
lightbox.lib に関しては、こちらの 標準クラス (lightbox.lib) を参照して下さい
01.// *********************************************************
02.// 【Windows ダイアログボックスプログラミング】
03.// *********************************************************
04. 
05.#define _WIN32_WINNT 0x0500
06.#include <tchar.h>
07.#include "lightbox\lightbox.h"
08. 
09.#pragma comment( lib, "lightbox\\lightbox.lib" )
10.#pragma comment( lib, "shlwapi.lib" )
11.#pragma comment( lib, "wininet.lib" )
12. 
13.#define CONNECT_DELOBJECT   LBOX_USER + 1
14. 
15.LboxTool Tool;          // ツールオブジェクト
16.LboxDlg *Dlg = NULL;
17. 
18.LRESULT CALLBACK DialogProc( HWND, UINT, WPARAM, LPARAM );
19. 
20.// *********************************************************
21.// Windows アプリケーションとしてのエントリポイント
22.// Link.exe で /SUBSYSTEM:WINDOWS がデフォルトで
23.// 指定される事になります
24.// *********************************************************
25.int APIENTRY _tWinMain(
26.    HINSTANCE hInstance,
27.    HINSTANCE hPrevInstance,
28.    LPTSTR lpCmdLine,
29.    int nCmdShow
30.)
31.{
32. 
33.    // ダイアログ表示
34.    DialogBox(
35.        hInstance,
36.        (LPCTSTR)1,
37.        GetDesktopWindow(),
38.        (DLGPROC)DialogProc);
39. 
40.    return 0;
41.}
42. 
43. 
44.// *********************************************************
45.//  MDB 接続ダイアログ
46.// *********************************************************
47.LRESULT CALLBACK DialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
48.{
49. 
50.    switch( message ) {
51.        case WM_INITDIALOG:
52. 
53.            // ダイアログオブジェクト作成
54.            Dlg = new LboxDlg( hDlg );
55.            Dlg->ChangeIcon( 1 );
56. 
57.            // デスクトップの中央
58.            Dlg->MoveWindow(
59.                    (Tool.DesktopWidth() - Dlg->Width())/2,
60.                    (Tool.DesktopHeight() - Dlg->Height())/2
61.            );
62. 
63.            return true;
64. 
65.        case WM_COMMAND:
66. 
67.            // OK ボタン
68.            if( LOWORD(wParam) == 1 ) {
69.                LboxString LString;
70.                LString.Printf("IDOK の番号 : %d, IDCANCEL の番号 : %d", IDOK, IDCANCEL );
71.                MessageBox(hDlg, LString.szLboxString, "タイトル", MB_OK );
72.            }
73. 
74.            // キャンセルボタンで終了
75.            if( LOWORD(wParam) == 2 ) {
76.                Dlg->End( LOWORD(wParam) );
77.                Dlg->SendMsg( CONNECT_DELOBJECT, 0, 0 );
78.            }
79. 
80.            break;
81. 
82.        case CONNECT_DELOBJECT:
83. 
84.            // ダイアログオブジェクトの廃棄
85.            delete Dlg;
86.            break;
87. 
88.    }
89.    return FALSE;
90.}