我想使用 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,看看会发生什么,我发现我的应用程序是在同一时间创建然后关闭的,让我想知道的是它在 Visual 上工作正常C++ 2012。
我的 sdk 7.1,安装正确,我在没有任何资源文件的基本窗口中测试它