windows API+c/c++如何创建 网站链接文本?(蓝色发光发亮字体,字底带有下划线) 本帖最后由 u013209493 于 2014-12-19 23:38:38 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 静态文本控件应该是“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;}基于VC2010的项目代码:http://pan.baidu.com/s/1c0eY15u 字体需要下划线的话,可以在设置文本颜色那里,对静态文本控件的句柄发送WM_SETFONT消息进行设置 如果可以用MFC的话就方便了,直接把那个CMFCLinkCtrl往窗口上一拖就OK 创建一个STATIC控件即可,就要需要自己处理各种鼠标消息,比如WM_MOUSEMOVE/WM_MOUSELEAVE/WM_MOUSEHOVER等 keyboard vkcode 线程间怎么通过消息通讯? 纠错?不知道哪儿的错! 请问有什么方法可以方便的维护不同版本程序在一个工程里的共存 关天在ACTIVEX控件里访问数据库的问题 有用过Month Calender Control的吗?100分求救 请问要实现远程桌面控制,怎样实现?哪里有参考资料下载? 用vc++做局域网内视频放系统,有那些资料可参考。 请问如何在别的机器上远程控制服务器上的service? 哪位老兄知道哪有好的计算机研究所? 动态库DLL在64位的WIN7系统下不能使用 CEF3的CefCookieManager的正确用法?
#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;
}
基于VC2010的项目代码:http://pan.baidu.com/s/1c0eY15u