SDK 7.1 を使用して win32 アプリケーションを構築したいと考えています。Visual C++ 2012 リソース エディターを使用してダイアログ ボックスを作成し、resource.rc と resource.h を自分のフォルダーにコピーして、次の単純な main.cpp ファイルを作成します。
#include <windowsx.h>
#include <Windows.h>
#include <tchar.h>
#include "resource.h"
#define my_PROCESS_MESSAGE(hWnd, message, fn) \
case(message): \
return( \
SetDlgMsgResult(hWnd, uMsg, \
HANDLE_##message((hWnd), (wParam), (lParam), (fn)) )) \
LRESULT CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
int WINAPI _tWinMain( HINSTANCE hInstance,
HINSTANCE,
LPTSTR,
int iCmdLine )
{
DialogBoxParam( hInstance,
MAKEINTRESOURCE(IDD_INJECTOR),
NULL,
(DLGPROC) DlgProc,
NULL
);
return FALSE;
}
LRESULT CALLBACK DlgProc( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam )
{
switch (uMsg)
{
my_PROCESS_MESSAGE(hwnd, WM_INITDIALOG, Cls_OnInitDialog);
my_PROCESS_MESSAGE(hwnd, WM_COMMAND, Cls_OnCommand);
default:
break;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
BOOL Cls_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDCANCEL:
EndDialog(hwnd, id);
break;
default:
break;
}
}
次に、次のコマンド ラインを使用して、このフォーラムで見つけたコードをコンパイルします。
cl main.cpp /link /SUBSYSTEM:WINDOWS user32.lib
私の問題は、ダイアログ ボックスが表示されなかったことです。procexp を使用して何が起こるかを確認すると、アプリケーションが作成されてから同時に閉じられることがわかりました。 C++ 2012.
私のSDK 7.1は正しくインストールされており、リソースファイルなしで基本的なウィンドウに対してテストしています