工控编程吧
标题:
42上位机VC MFC实现字形的不规异形窗口
[打印本页]
作者:
qq263946146
时间:
2015-11-28 12:18
标题:
42上位机VC MFC实现字形的不规异形窗口
(, 下载次数: 4)
上传
点击文件名下载附件
42上位机VC MFC实现字形的不规异形窗口
功能展示
在我们开发的上位机程序功能过多时,启动可能要等待一段时间,或我们程序界面显示前,设备要进行回原点操作,这样在一定程序上会给用户感觉程序没有运行起来。如果我们给程序添加一启动界面便可消除这种错觉,我们这里创建一个只显示文件的窗口界面,效果如图。
要点提示
在设计字型窗口可以利用设备上下文CDC类的通道方法来实现,包括BeginPath() TextOut() EndPath()SetBkMode(); BeginPath() EndPath() 用于打开和关闭设备上下文路径,必需配套使用; TextOut() 输出我们要显示的文字;
最后我们用函数PathToRegion()将路径转换为区域, 用SetWindowRgn()函数将转换后的区域设置我们的窗口区域
实现功能
1.新建基于对话框的应用程序
2.自定义添加一个实现窗口字型的函数
void CGkbc8Dlg::ShapeShift(CString str)
{
CFont font;
CDC *pDC = GetDC();
font.CreatePointFont(900,"宋体",pDC);
pDC->SelectObject(&font);
pDC->BeginPath();
pDC->SetBkMode(TRANSPARENT);
pDC->TextOut(18,18,str);
pDC->EndPath();
HRGN hrgn;
hrgn = PathToRegion(pDC->m_hDC);
SetWindowRgn(hrgn,TRUE);
font.DeleteObject();
}
复制代码
m_sText为手动添加的变量CString m_sText;
3.静止的字形窗口效果我们只要在对话框OnInitDialog()中调用一次便可,如要动态的字型窗口我们可以通用定时器来时现
void CGkbc8Dlg::OnTimer(UINT nIDEvent)
{
if(1 == nIDEvent)
{
m_sText += ".";
if(m_sText.GetLength() >= 14)
m_sText="正在回原点";
ShapeShift(m_sText);
}
CDialog::OnTimer(nIDEvent);
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/6c8627ca0fb951e02a6f1f337c997207/0/0/w_19rtacctz5.swf-albumId=4944609709-tvId=4944609709-isPurchase=0-cnId=12[/iqiyi]
源码及视频下载
(仅在电脑可见)
(, 下载次数: 1)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4