允许在.h/.cpp 文件中写入资源定义吗?

Write the resource-definition in the .h/.cpp file is allowed?

我们知道资源定义写在 resource.rc 文件中,但我的问题是是否可以将资源定义写在 .h/.cpp 文件中 .rc 文件

例如,我想做类似下面的事情:

// .cpp or .h file
#define IDD_MainWindow 1 

IDD_MainWindow DIALOGEX 100, 100, 350, 150
STYLE WS_VISIBLE
BEGIN
CONTROL "", ED_ABOUT, "Static", WS_CHILD | WS_VISIBLE | SS_CENTER, 4, 4, 340, 115
CONTROL "&OK", BTN_OK, "Button", WS_VISIBLE | WS_CHILD, 155, 120, 50, 15
END
// --------
CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MainWindow), NULL, DlgProc);

是否可以这样做,或者有另一种方法可以在没有 .rc 文件的情况下在内部编写资源定义?

是的,这是可能的。 Microsoft 资源编译器有一个基本的 C 预处理器和 it defines a macro you can check for.

#define MYICONID 42
#ifdef RC_INVOKED
MYICONID  ICON "myicon.ico"
#else
#include <Windows.h>
int main(...)
{
  LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(MYICONID), ...);
  ...
}
#endif

然后您可以将此文件输入 rc.exe cl.exe。这当然仍会生成一个 .res 文件,您必须在链接时包含该文件。