C++を使用してダイアログのハイパーリンクを模倣しようとしています。
SS_NOTIFYが設定された静的コントロールを使用しているので、ユーザーはコントロールをクリックしてWebページに移動できます。
LTEXT "Caption2",IDC_SETTINGS,9,36,219,13,SS_NOTIFY
SS_NOTIFYを設定すると、静的に対して登録されているため、クリックをインターセプトできます。
case IDC_STC_URL:
ShellExecute(NULL, "open", "http://google.co.uk", NULL, NULL, SW_SHOWNORMAL);
return TRUE;
また、WM_SETCURSORメッセージをインターセプトして、カーソルを手に変更しています。
case WM_SETCURSOR:
POINT pt;
RECT rect;
GetCursorPos( &pt );
GetWindowRect( GetDlgItem(hwnd,IDC_SETTINGS), &rect );
if (PtInRect(&rect, pt))
{
SetCursor(LoadCursor(NULL, IDC_HAND));
}
else
{
SetCursor(LoadCursor(NULL, IDC_ARROW));
}
return TRUE;
ただし、SS_NOTIFYが設定されている場合、カーソルの変更は機能しません。SS_NOTIFYが無効になっている場合は、無効になっています。ただし、クリックは静的に対して登録されないため、ShellExecute()はURLを開くことができません。
誰かが私が間違っていることについて提案がありますか?
ありがとう、ofer。