如何将MFC对话框映射到不同的帮助ID?

时间:2014-08-20 07:09:06

标签: c++ mfc

我有一个对话框CMyDialogBox,它有帮助按钮。 我已将帮助按钮映射到所需的helpid。

当我有以下要求时问题会上升:当我创建以下实例时,应该使用不同的帮助来映射帮助按钮。

CMyDialogBox mesg1;  // help should map to 123.htm
CMyDialogBox mesg2;  // help should map to 124.htm
CMyDialogBox mesg3;  // help should map to 125.htm

但是对话框有一个帮助按钮映射到一个帮助内容。 如何映射到多个帮助ID?

我尝试了什么:
我尝试使用initdailog()更改Setntrldlg()函数上对话框的对话框ID 但没有结果。

2 个答案:

答案 0 :(得分:1)

我认为你很接近,但可能应该调用SetHelpID而不是SetDlgCtrlID

这个问题已有几年了,所以为了这个问题的其他人的利益,这里是如何做到的。假设可以在OnInitDialog期间决定选择哪个帮助页面,并假设您正在使用HTML帮助编译器工具,就像您认为"应该" 34;使用它们:

  1. resource.h文件中定义ID,尤其是makehm实用程序看到它们,以生成" H"版本
  2. OnInitDialog中使用其中一个ID调用SetHelpID,具体取决于对话框的模式,或者需要不同帮助页面的任何条件。即使它被称为SetHelpID,它也会使用常规ID,因为应用程序中不存在" H" - 前缀ID。
  3. 在帮助文件中,设置" H"要映射到其他HTML文件的ID版本。
  4. 如果您正在使用对话框模板,并且未将其用作帮助ID之一,则可能还需要继续将其映射到帮助页面,以防SetHelpID没有&#39 ;你可以调用一个备用ID(例如,可能存在例外情况)。

答案 1 :(得分:0)

我认为你可以在CMyDialogBox中添加一个CString变量,并在构造DialogBox时初始化它。就像这样:CMyDialogBox mesg1(“123.htm”);