2009-09-03 20 views
1

いくつかの処理の後、私のプログラムはログファイルを読んで、何が行われたのかを知るためのメッセージボックスを表示します。私はそのファイルの名前の代わりにそのファイルへのリンクを表示したいと思います。これはどうですか?MessageBoxのファイルへのリンクVC++ 2008 Windows xp

どうもありがとう

UPDATE:

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を使用していません...これが問題になりますか?

答えて

1

Win32関数ShellExecuteを起動してログファイルを開くボタンを用意することができます。

A)

Bスクラッチ

から独自のダイアログを作成します)糸フック(は、SetWindowsHookExを使用)と、メッセージボックス()の初期化をキャッチし、それを少しサイズを変更:

+0

この場合、私はMessageBoxではなくカスタムダイアログを使用することができます。 – deb

+0

できません。 (0、NULL、 "c:\\ your_log_here.txt"、NULL、 "NULL"、 "NULL"、または " NULL、SW_SHOWDEFAULT); ' – pingw33n

+0

最後に私はあなたのやり方を変えました。 – deb

1

私見は、次の2つのオプションがあります(XP以降には基本HTMLをサポートするlink controlがあります。このコントロールも2000に存在しますが、文書化されておらず、別のクラス名を持っています)

+0

Windowsプログラミングの多くは、このようなものです。マイクロソフトが提供するものの範囲をはるかに超えており、その努力は桁違いに増加しています。 –

0

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

私はこれがSetWindowHookExルートよりもはるかに安全だと思います。

+0

このダイアログにログファイルの名前を表示する方法はありますか... dinamically、つまり、ログ名を表示する...これは必ずしも同じ名前ではありません(実行時によって異なります) – deb

+0

は簡単に、リンクコントロールでsetwindowtextを使用して、ダイアログが起動したとき(おそらくWM_INITDIALOGに応答して)コントロールのテキストを設定します。 – Elemental

+0

これは動作しません。 – deb