ブラウザでダウンロード ![]() 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. } ![]() |