链接到MessageBox VC ++ 2008 Windows xp中的文件

时间:2009-09-03 11:28:35

标签: windows visual-c++ hyperlink messagebox

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

非常感谢

更新:

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 ......这可能是问题吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

恕我直言,你有两个选择:

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

B)使用线程钩子(SetWindowsHookEx)并捕获MessageBox()的初始化,稍微调整一下并添加自己的控件(XP及以后有一个支持基本html的link control。也存在于2000年,但没有记录,并有不同的类名)

答案 2 :(得分:0)

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

我认为这比SetWindowHookEx路线更安全。