![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows应用开发
文章平均质量分 52
qiuchangyong
这个作者很懒,什么都没留下…
展开
-
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
这些都是因为没有使用UTF-8-BOM编码导致的。可以使用notepad++打开它,选择“编码” - “使用UTF-8-BOM编码”,将文件的编码转换一下,问题就解决了。如题,Qt的编译输出报了这个警告,这是因为源码文件中含有中文,且字符编码不对导致的。我遇到的情况是,文件已经使用UTF-8编码了,还是会报这样的警告。如果用qDebug打印中文,还有可能出现“error C2001: 常量中有换行符”。原创 2024-05-18 14:23:32 · 136 阅读 · 0 评论 -
正在载入qrc文件 指定的qrc文件无法找到。您想更新这个文件的位置么?
如果需要用到qrc文件,选择Yes,再选择qrc文件所在的位置;如果不需要qrc文件,可以选择No,然后用普通文本编辑器打开,将“ <resources></resources>”改为“<resources/>”,这样再次打开后就不报错了。打开Qt的ui文件,弹出提示框。原创 2024-05-04 10:38:45 · 523 阅读 · 0 评论 -
/MANIFESTDEPENDENCY (Specify Manifest Dependencies)
【代码】/MANIFESTDEPENDENCY (Specify Manifest Dependencies)转载 2024-04-08 01:23:19 · 54 阅读 · 0 评论 -
编译qt的mysql驱动
先从qt的官方网站下载qt的源码,可以不下载全部的,而下载部分的,比如我就下载了qtbase-everywhere-src-6.2.4这个,下载完解压后进入到qtbase-everywhere-src-6.2.4\src\plugins\sqldrivers,发现下面的源码只能使用cmake编译。这个容易,于是想到使用cmake-gui,configure和generate后,生成vs2019 x64的工程。当然以上过程中还有一些小坑啥的,欢迎在下方留言评论,我会作答的。原创 2023-01-12 01:22:56 · 653 阅读 · 0 评论 -
VC设置CListCtrl使用report view时的tool tip
如题,当使用CListCtrl的报表视图显示列表信息时,由于子项的文字内容超过了列宽,不能完全显示,这时候可以通过设置其扩展风格,加上LVS_EX_INFOTIP风格:m_list.SetExtendedStyle(LVS_EX_INFOTIP | m_list.GetExtendedStyle());这样就解决了无法查看显示不全的子项内容的问题,将鼠标悬停在被隐藏的子项上面,就会弹出tool tip,而tool tip的内容就是完整的子项的内容。...原创 2022-06-11 22:55:00 · 215 阅读 · 1 评论 -
GetScrollInfo function (winuser.h)
The GetScrollInfo function retrieves the parameters of a scroll bar, including the minimum and maximum scrolling positions, the page size, and the position of the scroll box (thumb).ParametersType: HWNDHandle to a scroll bar control or a window转载 2022-05-31 23:21:15 · 123 阅读 · 0 评论 -
MFC 应用程序向导的用户界面功能
本主题介绍可用于指定应用程序外观的选项。 可用于项目的用户界面功能取决于在 MFC 应用程序向导的"应用程序类型,MFC应用程序向导"页中指定的应用程序类型。 例如,如果创建单个文档界面应用程序,则不能添加子框架样式。 主框架样式 设置应用程序主窗口框架的功能。 选项 说明 粗帧 创建具有大小调整边框的窗口。 默认值。 "最小化"框 在主框架窗口中包含最小化框。 默认值。 最大化框 在主框架窗口中包括最大化框。 默认值。 最小化 ..转载 2022-05-27 01:44:33 · 227 阅读 · 0 评论 -
谈谈MFC中的虚函数PostNcDestroy
使用MFC这种Windows界面开发框架进行开发,所做的工作通常是添加(事件、消息、虚函数)这三类东西。其中事件和消息是Windows应用开发必须可少的,而MFC库中的虚函数以及一系列宏都是其制造出来的特色。这里要讲的是PostNcDestroy这个虚函数,它最初是在CWnd类中定义的,它的定义如下:// for custom cleanup after WM_NCDESTROYvirtual void PostNcDestroy();这是afxwin.h中的源码,上面一行注释,意思是说在收到原创 2022-05-18 01:38:13 · 1235 阅读 · 1 评论 -
MultiByteToWideChar
This function maps a character string to a wide-character (Unicode) string.The character string mapped by this function is not necessarily from a multibyte character set.SyntaxCopyint MultiByteToWideChar( UINT CodePage, DWORD dwFlags, LPCSTR转载 2022-05-23 21:51:43 · 349 阅读 · 0 评论 -
DXGI_FORMAT enumeration (dxgiformat.h)
在使用D2D开发时,遇到创建位图时所用的像素格式枚举,有些不理解。后来在微软的网站上找到这个:Resource data formats, including fully-typed and typeless formats. A list of modifiers at the bottom of the page more fully describes each format type.Syntaxtypedef enum DXGI_FORMAT { DXGI_FORMAT_UNKN翻译 2022-05-23 21:47:41 · 484 阅读 · 0 评论 -
VC修改树控件的item颜色且使其被选中的item在失去焦点后保持高亮显示
我们在Windows桌面开发中使用树控件,可能会用到修改item的文字颜色和背景颜色,要做到这一点,原理是为每一个item设置它的TVITEM结构体的lParam值,之后在父窗口类的消息映射ON_NOTIFY(NM_CUSTOMDRAW...的函数中实现具体绘制,绘制时LPNMTVCUSTOMDRAW->nmcd.lItemlParam知道是哪一个item,为它设置具体的颜色。可参考这篇文章:VC++ 中如何更改Tree Control控件中节点的背景色和节点文字的颜色_tipler的博客-CSD原创 2022-05-10 23:42:02 · 559 阅读 · 0 评论 -
如何理解CreateEvent函数的第二个参数bManualReset?
今天偶尔用到这个,温故一下。如果bManualReset为TRUE,就是手动重置,那么该event对象要从有信号变为无信号,就必须使用ResetEvent函数;如果bManualReset为FALSE,就是自动重置,这个自动重置具体要怎么理解?举例来说,就是对一个有信号的event对象使用WaitForSingleObject(hEvent, INFINITE)会立即返回,同时该event对象就被重置为无信号的状态,而手动重置的event对象还是会保持之前有信号的状态。当然,将一个event对象从无信号原创 2022-03-28 22:24:09 · 495 阅读 · 0 评论 -
windows下安装Qt,配置环境变量
以我安装的Qt5.12.0为例,安装在C盘,安装完成后,将“C:\Qt\Qt5.12.0\5.12.0\msvc2017\bin”这个路径添加到环境变量的PATH中,即可。原创 2021-05-20 19:40:14 · 2619 阅读 · 0 评论 -
labwindows cvi 2017中,time函数使用注意事项
最近在用labwindows cvi 2017完成一个项目,发现其中api自带的time函数返回的秒数有些不对,经过查文档后看到:“The value that is returned is the number of seconds since January 1, 1900 Coordinated Universal Time (UTC), formerly known as Greenwich Mean Time (GMT).”,原来NI对这个函数作了修改,这不同于c语言下的time函数,那是以197原创 2021-05-03 17:07:35 · 718 阅读 · 0 评论 -
Qt的例子audio-visualizer-qml
这是Qt自带的一个例子,展示3d形式的声音可视化,同时包括qml的使用,qml基于javascript,将Qt中的3d技术以脚本的形式使用,极大加速了应用的搭建。这也和vue,electron开发界面应用有异曲同工之妙。在Windows下使用QtCreator生成应用程序exe后,必须把依赖的dll从Qt安装的路径下面拷贝到应用程序所在的目录才能执行,有时候不知道要拷贝哪些dll,一个办法是将所有的dll都考进来,然后程序可以打开运行了,这时候再尝试删除这些dll,用不到的会被删除掉,而用到的会在删除时原创 2020-11-01 21:41:10 · 462 阅读 · 0 评论 -
模式对话框与非模式对话框的区别
模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。在WIN32中,模式对话框的创建一般是使用DialogBox来进行创建的。而非模式对话框则是利用CreateWindo转载 2020-05-28 14:39:21 · 778 阅读 · 0 评论 -
详解CREATESTRUCT结构体
CREATESTRUCT结构定义了传递给应用程序的窗口过程的初始化参数,它定义了窗口外观相关特性,CREATESTRUCT结构具有如下形式:typedef struct tagCREATESTRUCT{ LPVOID lpCreateParams; //指向将被用于创建窗口的数据的指针。 HANDLE hInstance; //标识了拥有新窗口的模块的模块实例的句柄。 HMENU hMenu; //标识了要被用于新窗口的菜单。如果是子窗口...转载 2020-05-25 20:22:52 · 976 阅读 · 0 评论 -
win32程序通过LPCREATESTRUCT中的lpCreateParams传递参数给窗口过程函数
win32窗口程序中如果需要给窗口过程函数传递自定义参数,可以通过LPCREATESTRUCT结构体中的lpCreateParams进行传递。创建窗口实例函数:m_hWnd = CreateWindowEx(WS_EX_APPWINDOW, "FxWinAPP", "FxWinAPP", WS_OVERLAPPEDWINDOW, nPosX, nPosY, wndRect.right - wndRect.left, wndRect.bottom - wndRect.t.转载 2020-05-25 20:11:16 · 883 阅读 · 0 评论 -
Qt里qtmain.lib的作用
为什么在有的Qt程序里必须要链接qtmain.lib?答案是:如果只是生成控制台程序,是不需要的,link flags里有/SUBSYSTEM:CONSOLE就表明这是一个控制台程序,这样生成的程序还是可以弹出窗口或对话框的界面,但是同时也有个黑窗口即控制台,如果为了查看吐出来的日志,可以这么做。如果希望去掉这个控制台黑窗口,就要使用/SUBSYSTEM:WINDOWS选项,可以在VC的项...原创 2020-02-21 17:05:14 · 1022 阅读 · 0 评论 -
Qt中rcc工具简介
Qt 自带的开发工具集里有专门的 rcc 工具,用于将 *.qrc 里面描述的图片、文档等编译成对应的源代码文件 qrc_*.cpp 或者独立的二进制资源文件 *.rcc。下面介绍 rcc 工具的两种用途:(1)生成独立的二进制资源文件 *.rcc对于太大的图片、音频、视频等文件,不适合集成到目标程序内部,可以放到操作系统文件路径,或者单独编译成外挂资源 *.rcc 。举例来说,myresou...转载 2020-02-19 21:03:08 · 1275 阅读 · 0 评论 -
Qt之pro文件解析
写在前面的话用Qt开发程序的好处是效率高,容易。下面讲讲如何入门:先从官网上下载一个Qt的安装文件,装完后就有了Qt的库文件,头文件,例子,编译工具,这些都很精致,有了它们才能加快开发的效率。还有个QtCreator,这个是用来开发Qt程序的IDE,和VS差不多,每个工程有个.pro文件,用QtCreator打开,pro文件的内容和CMake.txt文件类似。QtCreator编译工程是依赖V...转载 2019-12-16 19:18:00 · 246 阅读 · 0 评论 -
ioctl+FIONREAD判断文件可读
linux下判断一个文件描述符是否可读可用ioctl,参数FIONREAD,包含头文件unistd.hwindows下有个类似的ioctlsocket,实现了ioctl的部分功能,也可以实现同样的功能。https://blog.csdn.net/tgdzsjh/article/details/17142949https://blog.csdn.net/wy_kath/article/d...翻译 2019-12-03 22:05:17 · 771 阅读 · 0 评论 -
directshow中调用ffmpeg库遇到的"无法解析的外部符号"
通常遇到"无法解析的外部符号"的问题,都是由于静态库的路径不对,或者静态库里没有这个函数,但我这次遇到的比较奇怪,虽然经验丰富,但也找不到头绪,经过一两天后,发现了问题的原因:1.如果使用了UNICODE字符集,属性-常规-字符集,应当使用对应的BaseClasses里的静态库2.如果工程是从旧的项目升级而来的,请检查“调用约定”,属性-C/C++-高级-调用约定,这里面有三种,即__st原创 2017-09-08 21:06:27 · 623 阅读 · 0 评论 -
Windows消息通信机制简述
在Windows中,可使用消息机制进行线程间,或进程间的通信,具有简单高效的特点。其中SendMessage和PostMessage和PostThreadMessage都可以在线程和进程之间通信,区别在于SendMessage是阻塞的,面向窗口的(即必须传入窗口句柄),PostMessage是非阻塞的,面向窗口的,PostThreadMessage是面向线程的,不需要传入窗口句柄。这些函数都可以在原创 2017-11-29 20:15:28 · 773 阅读 · 0 评论 -
一个窗口应用程序的基类实现代码
我们知道,开发一个窗口应用程序,可以使用MFC,里面有一个类CWinApp,但MFC的实现原理不那么容易弄懂。下面这个WinApp的类,可以说揭示了一个窗口应用程序的全貌,使用者只需要继承这个类,根据具体业务逻辑的需求去实现其中的几个虚函数就可以了。/*// Sample demonstrating interoperability of OpenCV UMat with Direct X...原创 2019-01-17 17:04:08 · 223 阅读 · 0 评论 -
VC如何在控制台应用程序下创建Windows窗口界面
在VC中,我们可以创建两类应用程序,一种是控制台下的,只有一个黑窗口,dos风格的,只能用键盘输入来交互的;另一种是Windows的窗口界面的,用鼠标点来点去操作交互的。前者通过main函数开始,即程序的入口点,后者呢,通过WinMain开始程序的执行。一个疑惑就是这两种方式究竟造成的区别咋就那么大呢?是不是写Windows视窗程序,必须定义WinMain函数呢?答案:不一定!比如OpenCV...原创 2019-06-07 13:48:14 · 2107 阅读 · 0 评论 -
对VC编译静态库和动态链接库时的/MT, /MTd, /MD, /MDd选项的理解
一般人都知道在Windows开发过程中,要实现代码重用,会封装成接口,再打包成库的形式,这就有了静态库和动态库。动态库的好处就是可以减少应用程序的大小,还有就是升级的时候只需要替换DLL即可,真正实现了模块化。但这个静态库或动态库在使用C/C++运行时库的时候其实也有两种方式,一种是链接多线程静态库libcmt.lib和libcpmt.lib,使用/MT选项;另一种是链接多线程动态链接库MSV...原创 2019-06-26 14:00:07 · 1675 阅读 · 0 评论 -
一个VC的"命令行选项不兼容"错误的解决
今天用VS2015编译一个从低版本转换来的工程,报了一个错误:1>cl : 命令行 error D8016: “/ZI”和“/Gy-”命令行选项不兼容这个有点让人摸不着头脑,实际上呢,VC的编译,是通过cl这个工具进行的,也就是一个命令行,在工程的属性页里的配置的工作等于是以可视化的方式设置选项。而这里的/ZI和/Gy-两个选项是不兼容的,就是说不能同时存在。既然启用了/ZI选项,/...原创 2019-07-08 00:25:47 · 1033 阅读 · 0 评论 -
Windows API函数之MessageBoxTimeout
Windows下的消息框MessagBox,会把程序阻塞住,需要用户与其交互后才能继续往下执行。你可能希望有一个既能弹出消息框,而又不阻塞在界面上,能够超时自动消失,类似于Android下的Toast。如果你有时间可以自己实现一个这样的窗口类,所幸Window已经提供了这样的功能了。你只需要建立一个头文件,把它包含进需要调用的源文件里面。比如这个头文件叫MsgBoxTimeout.h,其内容为:...原创 2019-08-02 12:14:41 · 2329 阅读 · 0 评论 -
使用libpng显示png图片
二话不说,上代码先。OPENFILENAMEA ofn = {0};char szFilter[] ="PNG Files (*.PNG)\0*.png\0""All Files (*.*)\0*.*\0\0";char filename[MAX_PATH]={0};char file_title[MAX_PATH]={0};ofn.lStructSize = siz...原创 2014-06-12 18:53:21 · 3397 阅读 · 0 评论 -
VS2015关掉文本编辑器的注释自动补全
在VS2015的文本编辑器里,要对代码块进行注释,当打出“/*”时,会自动补全为“/**/”,然而这不是我想要的,如何关掉它?以C/C++为例,从菜单栏 - 工具 - 选项中打开下面的对话框,取消选择“自动大括号完成”。...原创 2019-10-05 21:47:50 · 750 阅读 · 2 评论 -
一个简单的文件合并工具
有些时候我们需要把两个文件合并到一起,比如一些片段,本身是被分割开了的,这时候就可以合并起来,网上也有这样的工具。这里提供一个简单的源码:int main(int argc, char* argv[]){ if (argc > 3) { FILE *test_exist = fopen(fopen(argv[argc-1], "rb"); if (test_ex原创 2016-01-28 14:45:06 · 765 阅读 · 0 评论