本帖最后由 u013209493 于 2014-12-19 23:38:38 编辑

解决方案 »

  1.   

    静态文本控件应该是“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
      

  2.   

    字体需要下划线的话,可以在设置文本颜色那里,对静态文本控件的句柄发送WM_SETFONT消息进行设置
      

  3.   

    如果可以用MFC的话就方便了,直接把那个CMFCLinkCtrl往窗口上一拖就OK
      

  4.   

    创建一个STATIC控件即可,就要需要自己处理各种鼠标消息,比如WM_MOUSEMOVE/WM_MOUSELEAVE/WM_MOUSEHOVER等