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

私見、あなたには2つの選択肢があります:

A)最初から独自のダイアログを作成する

B)スレッドフック(SetWindowsHookEx)を使用して、MessageBox()の初期化をキャッチし、サイズを少し変更して、独自のコントロールを追加します(XP以降には、基本的なhtmlをサポートするリンクコントロールがあります。このコントロールは2000にも存在しますが、文書化されておらず、クラス名が異なります)

于 2009-09-03T14:27:14.640 に答える
1

Win32 関数ShellExecuteを呼び出してログ ファイルを開くボタンを提供できます。

于 2009-09-03T11:39:27.407 に答える
0

最も直接的な解決策は、標準のメッセージ ウィンドウ ボックスのように見える独自のダイアログ ボックスを用意し、標準の静的テキストの代わりにリンク コントロール (このスレッドで Anders が参照) を使用することです。

これは SetWindowHookEx ルートよりもずっと正気だと思います。

于 2009-09-06T21:40:19.783 に答える