当前位置: 首页 > news >正文

临沂网站制作加速企业发展/中央突然宣布一个大消息

临沂网站制作加速企业发展,中央突然宣布一个大消息,做网站在自己电脑建立虚拟机,河南省新冠疫情最新情况SonicUI是一个GUI引擎,提供了一些简单的UI组件实现高效率的UI效果,例如:自绘按钮、异形窗体、动画、超链接和图像操作方法。此项目作者开源到CodeProject,地址为:http://www.codeproject.com/KB/GDI/SonicUI.aspx。下载…

  SonicUI是一个GUI引擎,提供了一些简单的UI组件实现高效率的UI效果,例如:自绘按钮、异形窗体、动画、超链接和图像操作方法。此项目作者开源到CodeProject,地址为:http://www.codeproject.com/KB/GDI/SonicUI.aspx。下载源代码编译动态库版本和静态库版本,在此我以Visual Studio 2008 SP1编译,也打包到下面的下载地址里面。下面介绍下SonicUI在MFC中的使用,如果有错误之处,还请指出。


1.新建一个基于对话框、使用Unicode库的工程,工程名称SonicUITest;
2.复制ISonicUI.h文件到工程目录下,添加此文件进工程;
3.复制SonicUIUd.dll、SonicUIUd_Dll.lib和SonicUIU.lib到工程目录下(这些是自己编译出来的);
4.在stdafx.h文件,添加以下代码:

1
2
3
4
5
6
#include "ISonicUI.h" 
#ifdef _DEBUG 
#pragma comment(lib,"SonicUIUd_Dll")    //调试时用Debug动态库 
#endif 
#pragma comment(lib,"SonicUIU")        //发布时用Release静态库(目录下还需其他支持库) 
using namespace sonic_ui; 
5.在对话框头文件,添加以下代码:

1
2
3
4
protected:     
    ISonicWndEffect* g_pEffect;            //窗口的效果引擎 
    ISonicString* g_pText[2];            //以关键字格式化字符串 
    void OnClose(ISonicString * pStr, LPVOID);    //委托关闭 
6.在对话框构造函数,添加以下代码:

1
2
3
    g_pEffect = NULL; 
    g_pText[0] = NULL; 
    g_pText[1] = NULL; 
7.在对话框OnInitDialog初始化函数里,添加以下代码:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
BOOL CSonicUITestDlg::OnInitDialog() 

    CDialog::OnInitDialog(); 
    //…… 
    //创建ISonicWndEffect 
    g_pEffect = GetSonicUI()->CreateWndEffect(); 
 
    //把窗体句柄加到ISonicWndEffect 
    g_pEffect->Attach(m_hWnd); 
     
    //设置窗体背景颜色 
    g_pEffect->SetBkColor(RGB(255,0,255)); 
 
    //委托窗体变换之后的事件,让其关闭窗体 
    g_pEffect->Delegate(DELEGATE_EVENT_TRANSFORM_OVER, NULL, this, &CSonicUITestDlg::OnClose);   
 
    //创建ISonicString 
    g_pText[0] = GetSonicUI()->CreateString(); 
    g_pText[1] = GetSonicUI()->CreateString(); 
 
    //格式化文字 
    g_pText[0]->Format(_T("/def/这是一段文字,使用SonicUI引擎实现")); 
    g_pText[1]->Format(_T("/c=%x, a='http://blog.csdn.net/akof1314', linkl=1, linkt='点击'/无幻博客http:blog.csdn.net//akof1314"), RGB(00255)); 
    return TRUE;  
8.添加窗体变换后的委托事件代码:

1
2
3
4
void CSonicUITestDlg::OnClose(ISonicString * pStr, LPVOID) 

    ::DestroyWindow(g_pEffect->GetSafeHwnd()); 
9.窗体上添加3个按钮,事件分别如下:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
void CSonicUITestDlg::OnBnClickedMoveButton() 

    //动画移动 
    g_pEffect->MoveGently(00); 

 
void CSonicUITestDlg::OnBnClickedAlphaButton() 

    //设置透明度 
    g_pEffect->SetLayeredAttributes(RGB(2550255), 0, LWA_COLORKEY); 

 
void CSonicUITestDlg::OnBnClickedAnicloseButton() 

    //变换窗体 
    g_pEffect->EnableTransform(TRUE, 0, CRect(0011), 20); 
10.在对话框OnPaint()函数里面绘制文字,添加以下代码:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
void CSonicUITestDlg::OnPaint() 

    if (IsIconic()) 
    { 
        //…… 
    } 
    else 
    { 
        PAINTSTRUCT ps; 
        HDC hdc = ::BeginPaint(m_hWnd, &ps); 
        g_pText[0]->TextOut(hdc, 5050, m_hWnd); 
        g_pText[1]->TextOut(hdc, 100100, m_hWnd); 
        ::EndPaint(m_hWnd, &ps); 
        CDialog::OnPaint(); 
    } 
11.编译、运行程序,截图如下:


SonicUI对异形窗体,自绘按钮等的支持。

1.首先准备素材文件,一张PNG背景图和一张PNG按钮图片,导入到上面工程的资源里面,VS2008会自动分辨为“PNG”资源类型名。
再加入一张动态GIF头像,加入到新建“IMAGE”资源类型,ID号为GIF_USERHEAD。再从“资源视图”打开IDD_ABOUTBOX对话框,删除默认控件,添加两个EDIT控件,设置其属性Border为False、Multiline为True、Want Return为True。
2.在对话框的实现文件,类CAboutDlg里面添加以下代码:

1
2
3
4
5
6
7
protected
    ISonicString* g_pButton;    //自绘按钮 
    ISonicImage* g_pImgButton;    //自绘按钮图片 
    ISonicImage* g_pImgBG;        //背景图片 
    ISonicImage* g_pImgUserHead;    //头像图片 
    ISonicAnimation* g_pUserHead;    //头像图片动画 
    void OnClose(ISonicString* pStr, LPVOID);    //委托关闭事件 
3.重载CAboutDlg的WM_PAINT消息函数,剩下的代码如下:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
BOOL CAboutDlg::OnInitDialog() 

    CDialog::OnInitDialog(); 
 
    //窗口风格 
    SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE)&~(WS_CAPTION)); 
    SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE)&WS_EX_TOOLWINDOW); 
 
    //自绘按钮 
    g_pImgButton = GetSonicUI()->CreateImage(); 
    g_pImgButton->Load(PNG_BUTTON, NULL, _T("PNG")); 
    g_pButton = GetSonicUI()->CreateString(); 
    g_pButton->Format(_T("/a, p4=%d, linkt='关闭窗体', btn_text='关闭', animation=40/"), g_pImgButton->GetObjectId()); 
    g_pButton->Delegate(DELEGATE_EVENT_CLICK, NULL, this, &CAboutDlg::OnClose); 
 
    //异形窗体 
    g_pImgBG = GetSonicUI()->CreateImage(); 
    g_pImgBG->Load(PNG_BG, NULL, _T("PNG")); 
    ISonicWndEffect* a_pEffect = GetSonicUI()->CreateWndEffect(); 
    a_pEffect->Attach(m_hWnd); 
    a_pEffect->SetBkColor(RGB(255,0,255)); 
    a_pEffect->SetLayeredAttributes(RGB(2550255), 0, LWA_COLORKEY); 
     a_pEffect->EnableWholeDrag(TRUE); 
 
    //调整位置 
    ::SetWindowPos(m_hWnd, NULL, 00, g_pImgBG->GetWidth(), g_pImgBG->GetHeight(), SWP_NOMOVE); 
    ::SetWindowPos(GetDlgItem(IDC_EDIT1)->m_hWnd, NULL, 8115401205, SWP_NOZORDER); 
    ::SetWindowPos(GetDlgItem(IDC_EDIT2)->m_hWnd, NULL, 8330401117, SWP_NOZORDER); 
     
    //动态头像 
    g_pImgUserHead = GetSonicUI()->CreateImage(); 
    g_pImgUserHead->Load(GIF_USERHEAD); 
    ISonicString* pGif = GetSonicUI()->CreateString(); 
    pGif->Format(_T("/p=%d/"), g_pImgUserHead->GetObjectId()); 
    g_pUserHead = GetSonicUI()->CreateAnimation(); 
    g_pUserHead->Create(m_hWnd, 266, pGif->GetWidth(), pGif->GetHeight()); 
    g_pUserHead->AddObject(pGif->GetObjectId()); 
 
    return TRUE;  // return TRUE unless you set the focus to a control 

 
void CAboutDlg::OnPaint() 

    PAINTSTRUCT ps; 
    HDC hdc = ::BeginPaint(m_hWnd, &ps);     
    g_pImgBG->Draw(hdc); 
    g_pButton->TextOut(hdc, 352456, m_hWnd); 
    ::EndPaint(m_hWnd, &ps); 

 
void CAboutDlg::OnClose(ISonicString * pStr, LPVOID) 

    OnOK(); 
4.编译、运行程序,截图如下:

下载地址:http://download.csdn.net/source/3561699

参考资料:

1.SonicUI - A Convenient GUI Engine You've Never Seen  http://www.codeproject.com/KB/GDI/SonicUI.aspx
2.让UI开发轻松而快乐,用SonicUI引擎实现常见UI效果 http://blog.csdn.net/zskof/article/details/3496343
3.SonicUI运行机制的粗略分析 http://blog.csdn.net/alien75/article/details/5940210

http://www.lbrq.cn/news/810649.html

相关文章:

  • 网站初期吸引用户注册/网络公司品牌推广
  • 新乡做网站哪家好/seo关键词排优化软件
  • 网站推广其他方案内容/seo网站推广多少钱
  • 有什么做h5的网站/中国网新山东
  • 云南网站建设c3sales/买转发链接
  • 繁体网站怎么做/搜狗seo查询
  • wordpress 去掉图片链接/公司官网优化方案
  • 遵义网站建设服务/成人电脑培训班办公软件
  • 机加工如何用网站开发客户/一站式网络推广服务
  • 网站seo外链怎么做/广州网站优化价格
  • 青岛响应式网站开发/百度网盘搜索引擎官方入口
  • 济南网络广播电视台/关键词优化搜索引擎
  • 重庆南坪网站建设公司/广州信息流推广公司排名
  • 三网合一网站建设合同/服务器ip域名解析
  • 韩国b2c电商网站/百度seo点击排名优化
  • 为什么要建设个人网站/成人教育机构排行前十名
  • 上海企业建站咨询/制作网页一般多少钱
  • 昆山移动网站建设/广州seo优化公司排名
  • 徐州市建设监理协会网站/百度极速版客服人工在线咨询
  • 手机上可视化编程app/企业seo顾问公司
  • wordpress 优缺点/优化网站怎么真实点击
  • 企业宣传网站怎么做/西安网络推广营销公司
  • 阜宁做网站工作室/电子商务平台建设
  • 做外贸外文网站怎么做好/seo关键字怎么优化
  • 三明网站开发/常见的网络营销推广方式有哪些
  • 用ps做美食网站/连接友谊
  • 网站建设公司哪家好该如何选择/南宁seo公司
  • 广州建设网站公司哪家好/百度在全国有哪些代理商
  • 个人网站可以做自媒体吗/关键词优化排名网站
  • 中国工商做年报网站/如何创建网站站点
  • 抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨
  • STL——list
  • 解决ubantu系统下matplotlib中文乱码问题
  • 广东省省考备考(第五十七天7.26)——数量、言语(强化训练)
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频语义理解与智能检索进阶(365)
  • IntelliJ IDEA 中左上方未显示项目根目录问题