1

经过一些处理后,我的程序会显示一个消息框,说您可以阅读日志文件以了解有关已完成操作的更多信息。我想显示文件的链接而不是文件名。这是怎么做到的?

非常感谢

更新:

IDD_RESULT_DIALOG DIALOGEX 0, 0, 228, 58
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION
CAPTION "Fax/Modem testing tool"
FONT 8, "Helv", 0, 0, 0x1
BEGIN
    PUSHBUTTON      "Cancelar",IDC_BUTTON1,174,38,50,14
    CONTROL         "<a>SysLink1</a>",IDC_SYSLINK1,"SysLink",WS_TABSTOP,105,22,32,14
END

这是创建 syslink 控件的 rc 文件中的代码。

BOOL CALLBACK ResultDlg(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)                  /* manipulador del mensaje */
    {
        case WM_INITDIALOG:
            SetWindowText(GetDlgItem(hDlg,IDC_SYSLINK1), (LPCSTR)"Visit my web site" );
           return TRUE;
        case WM_COMMAND:        
           EndDialog(hDlg, FALSE);
           return TRUE;
    }
    return FALSE;
}

这是使用 SetWindowText ...

对话框不显示。如果对话框中嵌入了 Syslink 控件。我没有使用 MFC ......这可能是问题吗?

4

3 回答 3

1

您可以提供一个按钮,该按钮将调用 Win32 函数ShellExecute来打开日志文件。

于 2009-09-03T11:39:27.407 回答
1

恕我直言,您有两种选择:

A) 从头开始​​制作自己的对话

B)使用线程挂钩(SetWindowsHookEx)并捕获MessageBox()的初始化,稍微调整它的大小并添加您自己的控件(XP和更高版本有一个支持基本html的链接控件。这个控件在2000上也存在,但未记录并具有不同的类名)

于 2009-09-03T14:27:14.640 回答
0

在我看来,最直接的解决方案是让您自己的对话框看起来像一个标准的消息窗口框,并使用链接控件(由 Anders 在此线程中引用)代替标准的静态文本。

我认为这比 SetWindowHookEx 路线要理智得多。

于 2009-09-06T21:40:19.783 回答