Windows编程
feiのfei
这个作者很懒,什么都没留下…
展开
-
vs2017创建一个QWidget窗口
记录一下创建一个QWidget的过程。1、右键项目 -> 添加 -> Add Qt class -> Qt Widgets class -> Add -> next。2、修改类名...3、编译QtWidgetsClass.ui4、在QtCreater中设置布局(主要记录一下设置的时候经常忘记的错误)...原创 2021-10-28 14:54:18 · 1178 阅读 · 4 评论 -
vs2013在使用git保存修改内容之后不再显示修改文件的问题解决方法
记录一下在vs2013中使用git的一些问题1、背景最近在vs2013中使用git仓库保存项目源码时,发现修改后的文件一旦保存,在vs2013的团队资源管理器-更改中就不再显示修改的文件。2、可能的原因(1)在gitee上创建仓库的时候,仓库中含有“-”。例如,我创建的名称是DataManager,gitee默认将仓库的链接改成data-manager。此时需要将data-manager手动改成datamanager。(2)在使用clone仓库时使用了重命名,例如,git clone h原创 2021-05-07 10:58:44 · 919 阅读 · 0 评论 -
控制台程序打印不同颜色的字体
最近在做一个类ftp的程序,我写界面实在是太垃圾了,所以选择用控制台程序实现。调试服务端和客户端时,总是会出现各种问题,于是只好将可能出现错误的地方打印出来。随着日志打印的越来越频繁,Console窗口显示太多的内容,都是黑底白字,想找到错误的日志真是一件费力的事情。于是我就想,是不是可以在打印日志的时候,将错误提示的日志使用红色区分,这样就不用在茫茫的日志中苦苦找寻自己想要的那一条。还好,Windows提供了API对Console的打印内容设置不同的字体颜色和背景颜色:API:BOOLSet.原创 2021-04-16 17:15:12 · 522 阅读 · 0 评论 -
MFC自定义绘图
重点内容:1、绘图过程放在计时器里面,这样可以防止集中刷新时的闪烁。2、重写OnMouseMove函数,记录鼠标与各控件的位置。3、虽使用MFC绘图,但是为了使界面美观,所以将资源视图->需要修改的窗口->属性->外观->Border的值改成None。4、重写OnLButtonDown函数,这里面设置哪些部分为标题栏,可以进行拖动。可以使用这个设置::PostMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM原创 2021-02-06 15:27:58 · 424 阅读 · 0 评论 -
Duilib中的TitleLayoutUI控件修改成横向滑动展示(以Troy的DuiLib_Ultimate为例)
Duilib中的TitleLayoutUI默认是竖向滚动展示,以Troy的DuiLib_Ultimate为例,如图显示现在想做成横向滑动显示,如下图:下面说一下修改的方法,其实很简单,就是将CTileLayoutUI::SetPos函数中的所有的x改成y,y改成x;top和bottom改成left和right,left和right改成top和bottom;Hor改成Ver,Ver改成Hor就可以了,因为源码已经写的很好了。下面是修改后的代码://头文件#pragma o.原创 2020-11-05 17:16:39 · 501 阅读 · 3 评论 -
Duilib控件字体设置
duilib有自带的字体设置,在xml中定义字体,例如:<Font id="16" name="微软雅黑" bold="false" size="16" italic="false" shared="true" default="true"/>在用的地方只需要引用字号16就可以。但是,这样设置有不方便的地方就是需要些大量的定义。例如:我需要设置10种字体名称、size也需要设置10,这样就需要10*10=100种定义。如果需要设置的东西更多的话,可能写在xml里面都不好查找。下面原创 2020-09-21 17:22:28 · 1678 阅读 · 0 评论 -
系统时钟修正
在使用duilib开发使用计时器时,总觉得计时器的时间不准确(特别是计时器的时间间隔越小时),这时可以使用系统时钟来进行时间的修正。windows提供了获取系统时钟的API GetTickCount();该函数返回系统启动到当前的毫秒数。...原创 2020-06-12 10:49:26 · 368 阅读 · 0 评论 -
vs2013编译加密版sqlite3(附带源码)
说明:本实例使用的是wsSQLite3的封装版。下载说明:本实例下载的是wxsqlite3.3.3.1版本。编译环境:vs2013。配置执行流程:1、新建一个Win32程序,命名为demo,在项目根目录demo同级创建lib和include文件夹;2、将下载的wxsqlite3.3.3.1解压包里面的sqlite3\include\sqlite3.h文件拷贝到demo工程include文件夹下面;3、将下载的wxsqlite3.3.3.1解压包里面的sqlite3\secure\ae原创 2020-05-29 17:10:06 · 421 阅读 · 0 评论 -
切记,不要在线程中使用duilib
问题:在线程中使用Duilib创建的控件,结果在mciSendCommand总是出问题。需求:想做一个音频小文件合并成大文件的功能。需要在控件中显示当前的合并进度。方法一:直接在主线程中做合并,通过回调的方式通知进度条刷新显示进度,文件合并能成功,但是进度条(使用CProgressUI控件)一直没有变化。于是,想在线程中合并调用合并函数方法二:创建线程,在线程中调用合并函数,结果合并失败。方法二的出错点:由于默认打开播放第一个小文件(使用mciSendCommand),所以在合并前需要关原创 2020-05-28 10:34:07 · 403 阅读 · 0 评论 -
ShellExecute
在C:\tmp\目录下面存在文件test.txt打开这个目录可以使用ShellExecute,代码如下:ShellExecute(NULL,_T("open"),_T("explorer.exe"),_T("C:\\tmp\\"),NULL,SW_SHOWNORMAL);如果,在此基础上增加“选中文件”的功能,只需要将上面的目录的名称换成文件的名称,并在前面加上"/select,"即可...原创 2020-04-12 15:41:16 · 279 阅读 · 0 评论 -
成员变量与临时变量
错误的实例:1、临时变量在使用Duilib::CRichEditUI::SetText时,在底层的某个线程中不断回调需要展示的内容。在调用SetText之前,将需要展示的内容放在一个临时变量str中。当程序运行时会偶尔崩溃,并提示访问冲突。如下图所示:查资料说0xC0000005的错误一般是指针错误导致的。于是将临时变量str改成成员变量m_str,就没有出现这个中断了。...原创 2020-03-23 10:52:02 · 478 阅读 · 0 评论 -
mciSendCommand
打开文件:mciSendCommand(NULL, MCI_OPEN,MCI_OPEN_ELEMENT, (DWORD_PTR)&mciParamsOuter);//阻塞一直使用这个方法调用,直到某次在使用Duilib库创建窗口的InitWindow中调用该函数,程序一直阻塞在该函数处。但是在窗口创建成功之后,再调用该函数是没有问题的。之后查资料发现在第三个参数中添加一个MCI...原创 2020-03-09 11:04:02 · 275 阅读 · 0 评论 -
关于使用Duilib控件实现滚动效果
在开发过程中可能需要实现动态的滚动效果,这里记录一个Duilib控件实现滚动的例子。上图中的每一条显示和每一组时间都是一个Label控件。其中,竖线的实现方法是创建一个Label控件,然后设置该控件的SetFixedHeight属性和SetBkColor属性。至于滚动效果2和3有所不同。3的滚动效果原理,将后一个控控件的高度赋值给前一个控件,最后一个控件则使用传入的值。2的滚动效果...原创 2020-02-13 17:28:55 · 1115 阅读 · 6 评论 -
Duilib中的DoEvent
自定义控件时,可以使用重写DoEvent函数给指定的窗口(CPaintManagerUI*对象所在的窗口)发送消息,消息也可以是自定义的。可以参考Duilib库中的click消息,该消息在在EVENTTYPE_UI枚举(UIManager.h)中没有,但是存在于duilib定义的消息(#define DUI_MSGTYPE_CLICK (_T("click")))...原创 2019-09-15 23:37:30 · 964 阅读 · 0 评论 -
Duilib自定义控件
方法一:1.1 继承IDialogBuilderCallback类,重写CreateControl函数。1.2 在使用该控件的类中继承OnCreate函数,代码如下: CDialogBuilder builder; CDialogBuilderCallbackEx cb; CControlUI* pRoot = builder.Create...原创 2019-09-17 09:38:01 · 481 阅读 · 0 评论 -
MFC窗口点击标题栏图标显示或隐藏窗口
添加WS_MINIMIZEBOX属性。具体可使用代码可参考:LONG nStyle = ::GetWindowLong(*this, GWL_STYLE);nStyle |= WS_MINIMIZEBOX;::SetWindowLong(*this, GWL_STYLE, nStyle);原创 2019-09-17 09:38:44 · 501 阅读 · 0 评论 -
WS_EX_TOOLWINDOW的问题
在创建窗口时为窗口设置WS_EX_TOOLWINDOW属性,当窗口(令为A窗口)与其他软件的窗口(令为B窗口)以及一个最大化的窗口(令为C窗口)在层叠显示时(A和B窗口的前后位置无关,且都在C窗口的前面),点击B窗口的最小化之后A窗口会被隐藏在C窗口之后。代码如下:Create(NULL,_T("A窗口"), UI_WNDSTYLE_DIALOG, WS_EX_STATICEDGE | W...原创 2019-09-17 09:39:53 · 3263 阅读 · 0 评论 -
设置窗口最顶层
HWND_TOPMOST可以设置窗口最顶层,设为窗口A,但是如果存在窗口B也设置了HWND_TOPMOST属性,根据微软官方的文档可知,窗口A和窗口B都可以覆盖对方成为最顶层窗口。如果想保持窗口A一直在最顶层,可以在计时器中通过调用:::SetWindowPos(m_hWnd, HWND_TOPMOST, x, y, nWidth, nHeight, SWP_SHOWWINDOW);保持窗...原创 2019-09-17 10:04:17 · 3205 阅读 · 0 评论 -
Duilib在控件中包含xml的两种方法
方法一:在xml中使用Include,具体代码如下<Container> <Include source="abc.xml"/></Container>方法二:自定义控件1、将上面的xml替换成下面的样式<Container> <MyAbc /></Conta...原创 2019-09-21 17:09:45 · 699 阅读 · 0 评论