○SDK リンクラベルの作成
サブクラス化により実現しています
クリックするとブラウザが開き、アドレスのページが表示されます。
@ダイアログにスタティックテキストを貼り付けます。
Aプロパティの設定
ID : IDC_STATIC1 に変更
キャプションに目的のWEBアドレスを入れる
サブクラス化の準備
□ VC6 : スタイルタブの"通知"にチェックを入れる
□ VC.net : NotifyをTrueにする
B以下のコードを入力する。
■入れ替えるプロシージャの作成--------------------------------------------
HCURSOR hIcon;
WNDPROC wproc0;
LRESULT CALLBACK LinkLabelProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
switch (msg){
case WM_SETCURSOR:
SetCursor(hIcon);
return 0;
break;
case WM_LBUTTONDOWN:
{
char buff[128]="";
GetWindowText(hWnd,buff,128);
ShellExecute(hWnd,NULL,buff,NULL,NULL,SW_SHOWNORMAL);
}
break;
case WM_PAINT:
{
char buff[128]="";
GetWindowText(hWnd,buff,128);
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,&ps);
HFONT font = CreateFont(12,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_DONTCARE,NULL);
HFONT oldFont = (HFONT)SelectObject(hdc,font);//フォントの適用
SetTextColor(hdc,RGB(0,0,255));
SetBkColor(hdc,GetSysColor(COLOR_BTNFACE));
TextOut(hdc,0,0,buff,lstrlen(buff));
SelectObject(hdc,oldFont);//フォントを元に戻す
DeleteObject(font);//フォントの破棄
EndPaint(hWnd,&ps);
}
return 0;
break;
}
return CallWindowProc(wproc0,hWnd,msg,wp,lp);
}
■サブクラス化の実現--------------------------------------------------
hIcon=LoadCursor(NULL,MAKEINTRESOURCE(32649));//手の形をしたアイコン
HWND hLinkLabel = GetDlgItem(hDlg,IDC_STATIC1);
wproc0 = (WNDPROC)GetWindowLong(hLinkLabel,GWL_WNDPROC);//プロシージャアドレスを取り出して
SetWindowLong(hLinkLabel,GWL_WNDPROC,(LONG)LinkLabelProc);//新しいプロシージャ―に入れ替えます
▲トップページ
>
Windows と C++