我不是 Windows 程序员。我正在开发的程序使用
DIALOGEX
创建“关于”窗口。我需要找到一种方法来替换字符串表中的资源来代替属于 DIALOGEX
一部分的 LTEXT。
我想这样做是为了在程序创建的日志文件中包含与版本相关的文本。我对资源文件处理此问题的方式缺乏了解。
我在
IDS_VERSION
中创建了resource.h
。相同的资源可以包含在 DIALOGEX
中吗?
我添加了资源:
#define IDS_VERSION 104
在字符串表中定义它:
IDS_VERSION "This program, Version 0.40"
将文本包含在我的 C++ 代码中:
LoadStringA(hInstance, IDS_VERSION, szVersion, MAX_LOADSTRING);
我更愿意使用
DIALOGEX
保留简单的 About 生成,但我不知道如何替换或更改 LTEXT 行。
IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About caption"
FONT 8, "MS Shell Dlg"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,14,14,21,20
LTEXT "This program, Version 0.40", IDC_STATIC, 42, 14, 114, 8, SS_NOPREFIX
DEFPUSHBUTTON "OK",IDOK,113,41,50,14,WS_GROUP
END
我对此有点陌生。我会尝试总结一下。有人问我:
这个问题类似于:使用纯Windows API设置StaticText控件文本,没有MFC。如果您认为有所不同,请编辑问题,明确其有何不同和/或该问题的答案对您的问题有何帮助。
非常相似,除了通过提供不同的 ID,我可以操纵字符串。我的目的是在两个位置输出版本字符串:日志文件和“关于”窗口。我想只在一处定义字符串以防止它们不同。伊戈尔的回应帮助我理解并解决了我的问题。
我仍然不太了解
IDC_STATIC
和/或它有何特别之处。我想需要大量阅读才能获得 Windows 资源的良好基础。
雷米建议我回答这个问题很好,我会在这里尝试:
通过从 IDC_STATIC 更改为我生成的名为 IDS_VERSION 的控件,我可以定义该字符串。
在“关于”窗口中我使用了以下代码:
LoadStringW(hInst, IDS_VERSION, szVerW, MAX_LOADSTRING);
SetDlgItemText(hDlg, IDS_VERSION, szVerW);
为了在日志文件中使用,我使用了以下代码:
LoadStringA(hInstance, IDS_VERSION, szVersion, MAX_LOADSTRING);
完成后,我可以为我的日志文件提取相同的字符串并在“关于”对话框中使用它。
感谢大家, -汤姆