○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++