大家好,欢迎来到IT知识分享网。
文章目录
DuiLib库
介绍:
DuiLib(第三方库,应用窗口美化,逻辑操作与界面分离,用XML文档进行界面编辑)(DUI与GUI/VUI的对比)
概念与定义:
DuiLib库优点与缺陷:
优点:
- 基于GDI在窗口上自绘,无其他依赖,未使用特殊或危险的系统调用,能够很好的解决传统MFC界面的一系列问题。
- 使用XML来描述界面风格,界面布局,将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明等。
- 完全兼容ActiveX控件(如常见的IE控件和Flash),也可以和MFC等界面库配合使用。
- 可广泛用于互联网客户端、工具软件客户端、管理系统客户端、多媒体客户端(如KTV、触摸屏)、车载电脑系统、gps系统和手机客户端软件等。
缺陷:
- 没有帮助文档
- 后期没有进行维护
使用
环境配置:
初步介绍
由于DuiLib库没有文档说明,在使用之后做出了如下总结,算是方便以后查阅,也分享给大家。有部分内容是拷贝转载的,已注明来源(精华提取,就不用跳过去看了)
主函数入口地址
_tWinMain //主函数入口地址 #define _tWinMain wWinMain _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow){
} //lpCmdLine 是命令行参数,nCmdShow 是窗体显示方式,hInstance 是实例句柄,hPrevInstance 这个参数是Win16 的遗留参数。
控件与界面的绘制
CPaintManagerUI //控件与界面的绘制,一般直接传入XML文档,写函数绘制太麻烦了 CPaintManagerUI::SetInstance(hInstance); CPaintManagerUI::SetInstance(hInstance); CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath()); // 设置资源的默认路径(此处设置为和exe在同一目录)
进阶使用&相关基础
Win32应用程序流程
1.注册窗口类 2.创建窗口 3.显示窗口&更新窗口 4.消息队列
MFC(将Win32的步骤封装成类,但是界面并不好看)
DuiLib(第三方库,应用窗口美化,逻辑操作与界面分离,用XML文档进行界面编辑
- 1>概念与定义
DuiLib库是轻量级的C++界面开发库。duilib并没有像MFC那样把所有的东西全包了,它仅仅包装了UI部分而已,其他的还是需要用win32、MFC的知识,所以除了UI部分,其他的都和duilib没有关系。
逻辑操作与界面分离了。 - 2>DuiLib库优点
1. 基于GDI在窗口上自绘,无其他依赖,未使用特殊或危险的系统调用,能够很好的解决传统MFC界面的一系列问题。
2. 使用XML来描述界面风格,界面布局,将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明等。
3. 完全兼容ActiveX控件(如常见的IE控件和Flash),也可以和MFC等界面库配合使用。
4. 可广泛用于互联网客户端、工具软件客户端、管理系统客户端、多媒体客户端(如KTV、触摸屏)、车载电脑系统、gps系统和手机客户端软件等。 - 3>部分类与函数
Create() duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); 参数 1>副窗口 2>窗口类的名字(标识) 3>风格(UI_WNDSTYLE_FRAME>厚边框) 4>风格 ShowModal(窗口显示,模态对话框) ShowWindal(窗口显示) CenterWindow(居中窗口) //如下为创建并居中显示窗口 CDuiFrameWnd duiFrame; duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); duiFrame.CenterWindow(); duiFrame.ShowModal(); MessageBox(NULL,_T("测试"),_T("GIF"),IDOK);//测试窗口 4>消息 typedef struct tagTNotifyUI {
CDuiString sType; CDuiString sVirtualWnd; CControlUI* pSender; DWORD dwTimestamp; POINT ptMouse; WPARAM wParam; LPARAM lParam; } TNotifyUI;
- 5>使用DuiLib注意
1、 duilib其实并没有区分标题栏和客户区,它的实现方法是屏蔽了系统自带的标题栏,用客户区来模拟标题栏,所以想怎么画就怎么画,非常方便。
我们首先屏蔽一下系统自带的标题栏,在HandleMessage消息处理函数里屏蔽以下三个消息即可 WM_NCACTIVATE、WM_NCCALCSIZE、WM_NCPAINT。 - 6>重写消息
1. WindowImplBase下的 virtual void Notify(TNotifyUI& msg);重写
2. WindowImplBase下的 virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);重写 - 7>win32:获取文件路径窗口
- 8>向CMD窗口发送命令(使用ffmpeg库,转到库目录下,使用如下cmd命令)
1. 使用图片生成gif
ffmpeg -r 1 -i .\Pictrue\%d.jpg 11.gif //-r(参数选项) 1(控制图片速度,值越大图片播放越快) -i(数据来源) .(当前目录)
2. 使用视频生成gif
(1)视频的截取
ffmpeg -ss 00:00:15 -to 00:00:25 -i input.mp4 -vcodec copy -acodec copy output.mp4 //从15秒截取到25秒 –vcodec视频文件拷贝 -acodec音频文件拷贝
(2)提取原视频中的字幕流
ffmpeg -i output.mkv -an -vn -scodec copy sub3.ass
(3)对提取到的字幕流进行编辑
(4)将字幕流烧录到视频文件
(5)视频生成CIF
ffmpeg -r 1 -i 1.flv 1.gif //1.flv(原视频的路径) 1.gif(生成视频的路径)
Dui Desiger
图片载入
source 左起,0,右至,高度
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126657.html