Win32:“关于”程序使用DIALOGEX。我希望替换其当前的 LTEXT 并使用 Stringtable 中的字符串

问题描述 投票:0回答:1

我不是 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 资源的良好基础。

c++ winapi
1个回答
0
投票

雷米建议我回答这个问题很好,我会在这里尝试:

通过从 IDC_STATIC 更改为我生成的名为 IDS_VERSION 的控件,我可以定义该字符串。

在“关于”窗口中我使用了以下代码:

LoadStringW(hInst, IDS_VERSION, szVerW, MAX_LOADSTRING);
SetDlgItemText(hDlg, IDS_VERSION, szVerW);

为了在日志文件中使用,我使用了以下代码:

LoadStringA(hInstance, IDS_VERSION, szVersion, MAX_LOADSTRING);

完成后,我可以为我的日志文件提取相同的字符串并在“关于”对话框中使用它。

感谢大家, -汤姆

© www.soinside.com 2019 - 2024. All rights reserved.