您的位置 首页 > 数码极客

vc如何更改控件属性

设计应用程序时,为了让用户方便地通过程序访问某个网站,需要采用具有超级链接功能的控件。

这样的一类控件可以从静态文本类CStatic派生。

在Windows API中,控件用一个结构体来表示,用API函数来操作控件,在MFC中,将结构体和API函数封装为类,与控件相关的就封装为不同的控件类,类类型可以方便地实现继承和派生关系。

1 新建一个基于对话框的应用程序website。

2 新建两个静态文本控件,两个控件更改为不同的ID,同时将“通知”属性勾选上。

3 新建基于CStatic的派生类Hyperlinks:

4 将两个静态文本控件分别关连Control类别的Hyperlinks类型的变量:

5 在web头文件中包含派生类的头文件Hy:

#include "Hy"

6 为派生类Hyperlinks添加三个成员变量:

CFont m_Font; CString m_ConnectStr; LOGFONT lfont;

7 为派生类Hyperlinks添加OnPaint方法,用来绘制控件外观:

void Hyperlinks::OnPaint() { CPaintDC dc(this); // device context for painting CDC* pDC = GetDC(); CString text; GetWindowText(text); if ()) m_ConnectStr = text; pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0,0,255)); pDC->SelectObject(&m_Font); pDC->TextOut(0,0,text); }

8 为派生类Hyperlinks重载虚方法PreSubclassWindow(),用来设置超链接文本和字体:

void Hyperlinks::PreSubclassWindow() { GetWindowText(m_ConnectStr); CFont* pFont = GetFont(); pFont->GetLogFont(&lfont); l =TRUE; m_Font.CreateFontIndirect(&lfont); CStatic::PreSubclassWindow(); }

9 为派生类Hyperlinks添加鼠标移动消息OnMouseMove(),用来修改鼠标的样式:

void Hyperlinks::OnMouseMove(UINT nFlags, CPoint point) { ::SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1)); CStatic::OnMouseMove(nFlags, point); }

10 在资源视图中插入一个鼠标资源:

11 为派生类Hyperlinks添加鼠标左键按下消息,用来打开静态文本控件对应的超链接:

void Hyperlinks::OnLButtonDown(UINT nFlags, CPoint point) { ShellExecute(m_hWnd,NULL,m_ConnectStr,NULL,NULL,SW_SHOW); CStatic::OnLButtonDown(nFlags, point); //MessageBox(0,m_ConnectStr); }

最终效果如下:

当然还可以继续添加超链接:

添加静态文本框并关连为派生类变量:

效果如下:

附ShellExecute()函数说明:

ShellExecute()是Windows API函数,用于打开一个应用程序:

ShellExecute( hWnd HWND //指定父窗口句柄 Operation PChar //指定动作, 譬如 open、runas、print、edit、explore、find [2] FileName PChar //指定要打开的文件或程序 Parameters PChar //给要打开的程序指定参数 如果打开的是文件这里应该是 nil Directory PChar //缺省目录 ShowCmd Integer //打开选项 ) HINST;

ShowCmd 参数可选值:

SW_HIDE = 0 //隐藏 SW_SHOWNORMAL = 1 //用最近的大小和位置显示, 激活 SW_NORMAL = 1 //同 SW_SHOWNORMAL SW_SHOWMINIMIZED = 2 //最小化, 激活 SW_SHOWMAXIMIZED = 3 //最大化, 激活 SW_MAXIMIZE = 3 //同 SW_SHOWMAXIMIZED SW_SHOWNOACTIVATE = 4 //用最近的大小和位置显示, 不激活 SW_SHOW = 5 //同 SW_SHOWNORMAL SW_MINIMIZE = 6 //最小化, 不激活 SW_SHOWMINNOACTIVE = 7 //同 SW_MINIMIZE SW_SHOWNA = 8 //同 SW_SHOWNOACTIVATE SW_RESTORE = 9 //同 SW_SHOWNORMAL SW_SHOWDEFAULT = 10 //同 SW_SHOWNORMAL SW_MAX = 10 //同 SW_SHOWNORMAL

-End-

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“vc如何更改控件属性,如何更改控件的属性”边界阅读