允许在.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 文件,您必须在链接时包含该文件。
我们知道资源定义写在 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 文件,您必须在链接时包含该文件。