windows API+c/c++怎么创建 网站链接文本?(蓝色发光发亮字体,字底带有下划线)

windows API+c/c++如何创建 网站链接文本?(蓝色发光发亮字体,字底带有下划线)
本帖最后由 u013209493 于 2014-12-19 23:38:38 编辑
研究了一天, 我把目标锁定在CreateWindow  API函数,但问题就来了,button?static? 还是其它的classname?
百度也翻了20多页,未得其解。。求代码 
------解决思路----------------------
静态文本控件应该是“STATIC”吧,可以直接在窗口资源上拖上去就行了,如果要用CreateWindow动态创建的话就创建窗口类为“STATIC”的控件。如果要实现网站链接的效果,可以处理一下WM_CTLCOLORSTATIC消息,把文本设置为蓝色,然后处理一下静态文本控件上的单击消息,调用ShellExecute()来打开网址,如果还需要鼠标移动到上面变成手型的话再处理一下鼠标移动的消息,调用SetCursor设置一下光标形状。


#include <Windows.h>
#include <tchar.h>
#include "resource.h"

BOOL CALLBACK MainDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

HINSTANCE hInst = NULL;

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR szCmdLine, int iCmdShow)
{
hInst = hInstance;
DialogBoxParam (hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, MainDlg, NULL);
return 0;
}

BOOL CALLBACK MainDlg (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND s_hStatic;
switch (message) 
{

case WM_INITDIALOG:
//创建静态控件
s_hStatic = CreateWindow(_T("STATIC"), NULL, WS_CHILD 
------解决思路----------------------
 WS_VISIBLE 
------解决思路----------------------
 SS_LEFT 
------解决思路----------------------
 SS_NOTIFY
, 100, 70, 150, 20, hDlg, NULL, hInst, NULL);
SetWindowText(s_hStatic, _T("http://www.sogou.com"));
return TRUE;
break;
case WM_CTLCOLORSTATIC:
//把静态控件文字设置为蓝色
SetTextColor((HDC)wParam, RGB(0, 0, 255));
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(NULL_BRUSH);
break;
case WM_CLOSE:
DestroyWindow(hDlg);
break;
case WM_COMMAND:
//处理静态控件上的单击消息
if (HIWORD(wParam) == STN_CLICKED && (HWND)lParam == s_hStatic)
{
TCHAR tszUrl[500] = {0};
GetWindowText(s_hStatic, tszUrl, 500);
ShellExecute(NULL, _T("open"), tszUrl, NULL, NULL, SW_SHOWNORMAL);
}
return TRUE;
break;
}
return FALSE;
}


windows API+c/c++怎么创建 网站链接文本?(蓝色发光发亮字体,字底带有下划线)

基于VC2010的项目代码:http://pan.baidu.com/s/1c0eY15u