在对话框中提供帮助

【勇芳软件工作室】汉化HomePreviousNext

要在对话框中提供上下文相关帮助,您必须创建一个由双字值对组成的数组。每对中的第一个值是对话框中的控件的标识符,第二个值是控件的帮助主题的上下文标识。阵列应包含对话框中每个控件的一对标识符。

对话框过程必须处理WM_HELPWM_CONTEXTMENU消息。当用户单击鼠标右键时,当用户按F1键和WM_CONTEXTMENU时,对话框过程接收WM_HELP。

WM_HELP的【lParam的】参数是一个指向HELPINFO结构的指针。此结构的hItemHandle成员标识用户请求帮助的控件。您必须将句柄传递给WinHelp函数以及HELP_WM_HELP命令,帮助文件的名称以及指向标识符数组的指针。WinHelp函数在数组中搜索指定控件的控制标识符,然后检索相应的帮助上下文标识符。接下来,该函数将帮助上下文标识符传递给Windows帮助,Windows帮助将找到相应的主题,并将其显示在弹出窗口中。如果控件的标识符为-1,则系统搜索作为选项卡停止的下一个控件,并使用其标识符来查找帮助上下文标识符。因此,在资源文件中的控件之前放置静态文本很重要。

处理WM_CONTEXTMENU类似于在调用WinHelp函数时处理WM_HELP,有两个例外:

*您从WM_CONTEXTMENU传递【wParam中】参数,WM_CONTEXTMENU是发送消息的控件的句柄。

*您指定HELP_CONTEXTMENU命令而不是HELP_WM_HELP。

HELP_CONTEXTMENU命令使Windows帮助在显示帮助主题之前显示一个菜单。菜单是系统定义的。它允许用户显示控件的帮助或显示帮助主题对话框。

以下示例显示如何在对话框中实现上下文相关帮助。

LRESULT CALLBACK EditDlgProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,

LPARAM lParam)

{

//创建一个控制标识符和上下文标识符的数组。

static DWORD aIds[] = {

ID_SAVE, IDH_SAVE,

ID_DELETE, IDH_DELETE,

ID_COPY, IDH_COPY,

ID_PASTE, IDH_PASTE,

0,0

};

开关(uMsg){

case WM_HELP:

WinHelp(((LPHELPINFO)lParam) - > hItemHandle,“helpfile.hlp”,

HELP_WM_HELP, (DWORD) (LPSTR) aIds);

break;

case WM_CONTEXTMENU:

WinHelp((HWND))wParam,“helpfile.hlp”,HELP_CONTEXTMENU,

(DWORD) (LPVOID) aIds);

break;

.

. //在这里处理其他信息

.

}

return FALSE;

}