自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C++初级开发面试题

针对C++小白,本人准备了一些问题(手动滑稽)//开始1、先做一个自我介绍吧;2、有没有用C++做过项目?有用过C++的哪些功能?//c++3、C++内存分配有几种方式?4、你在写代码的时候是如何分配内存的?如何释放?new 和 malloc的区别?5、有用过标准库吗?用过哪些容器?容器的区别和适用场景?vector是怎么实现动态扩容的?list和vector区别及适用场景,map,hashmap查找时间复杂度,底层实现6、什么是多态?7、智能指针8、现在要动态创建一个数组来存字符串"a.

2020-07-21 10:17:13 72

原创 MFC窗口最大化导致遮住任务栏的问题

添加WM_GETMINMAXINFO消息处理函数,函数体如下:void CTabDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI){ // TODO: Add your message handler lpMMI-> ptMaxSize.y = GetSystemMetrics(SM_CYFULLSCREEN)+GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYDLGFRAME); CDial

2020-07-17 16:24:42 46

转载 Qt QTableWidget 去掉默认行号

QHeaderView *header = tblList->verticalHeader();header->setHidden(true);// 隐藏行号

2020-07-17 16:23:36 105

原创 QT项目中加入大的资源文件导致编译报错

在工程pro为文件上添加CONFIG += resources_big适用Qt5,不支持Qt4

2020-07-07 16:30:48 72

原创 QT5中文乱码解决

利用QStringLiteral//w为QWidget类的对象,设置窗口标题w.setWindowTitle(QStringLiteral("你的名字"));QStringLiteral

2020-07-07 16:26:27 49

转载 bat脚本获取管理员权限

接下来,只需要在.bat脚本中添加一下代码 即可实现 以管理员身份运行::强制获取管理员运行权限%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit...

2020-07-03 14:44:35 89

转载 QNetworkRequest访问https的连接失败的解决方案

当URL为带https的安全连接时,就一直返回失败。后来查资料才知道需要带一些安全配置,代码如下:m_request = new QNetworkRequest();//需要加入ssl的关键代码QSslConfiguration config = m_request->sslConfiguration();config.setPeerVerifyMode(QSslSocket::VerifyNone);config.setProtocol(QSsl::TlsV1SslV3);m_re

2020-07-03 14:43:12 118

转载 1、MFC无边框窗口点击任务栏不能最小化的问题。

在OnInitDialog方法中加入下面代码就可以了:LONG dwStyle = ::GetWindowLong(m_hWnd,GWL_STYLE);::SetWindowLong(m_hWnd,GWL_STYLE,dwStyle | WS_MINIMIZEBOX);

2020-07-03 14:40:51 65

原创 MFC WebBrowser去掉滚动条、右键菜单、缩放、边框等。

直接在网页中处理即可,不用在MFC中纠结。网页可以达到以上所有效果!

2020-06-24 15:44:42 100

原创 js捕获鼠标坐标、全局点击事件

代码如下:<script type="text/javascript"> window.onload=function() { document.onmousedown=function(event) //鼠标按下事件 { } document.onmouseup=function(event) //鼠标弹起事件 { } document.onmousemove=function(event) //鼠标移动事件 { }

2020-06-24 15:42:29 244

转载 textarea根据内容的增加自动往下滑动

每次在textarea中添加内容后调用以下函数:<script type="text/javascript">function setFocusLast(obj){ obj.focus(); var r = obj.createTextRange(); r.moveStart("character",obj.value.length); r.collapse(true);

2020-06-24 15:37:16 163

原创 网页加载完成后立即执行的函数——window.onload事件

为什么要使用window.onload()?有很多时候我们需要等待HTML 文档渲染完成后再通过Js去访问一些文档元素,否则可能会出现报undefined错误的情况。调用例子如下:<script type="text/javascript"> window.onload=function(){ document.getElementById("bg").style.backgroundColor="#F00"; }</script>..

2020-06-24 15:34:49 161

原创 通过SendMessage向一个窗口的子控件发送消息

比如向一个MFC窗口的ActiveX控件发送消息,假设窗口的标题是"abcd",ActiveX控件的标题是"fff"则代码如下: HWND hWnd = ::FindWindow(NULL,"abcd"); if(hWnd) { hWnd = ::FindWindowEx(hWnd,NULL,NULL,L"fff"); if(hWnd) ::SendMessage(hWnd,WM_TEST,0,0); }

2020-06-23 16:10:46 150

转载 wchar_t *和char * 相互转化

转载了一个简答粗暴的方法:std::wstring CharToWchar(const char* c, size_t m_encode = CP_ACP){ std::wstring str; int len = MultiByteToWideChar(m_encode, 0, c, strlen(c), NULL, 0); wchar_t* m_wchar = new wchar_t[len + 1]; MultiByteToWideChar(m_encode, 0, c, strlen

2020-06-23 15:44:24 118

转载 WM_COPYDATA 注意事项

这里转载了一位同学对WM_COPYDATA的总结,写的不错,我基本没有修改。COPYDATASTRUCT有三个成员变量,如下所示:typedef struct tagCOPYDATASTRUCT { ULONG_PTR dwData; DWORD cbData; PVOID lpData;} COPYDATASTRUCT, *PCOPYDATASTRUCT;注意:1、dwData为自定义数据,按照自己习惯设置就好,不影响对象的传输;2、cbDat.

2020-06-23 15:40:10 65

原创 无法接收SendMessage消息

窗口向另一个进程的窗口发送消息,但那个窗口始终收不到消息,虽然已经通过FindWindow找到了句柄,最后发现接收消息窗口的进程是管理员权限运行,发送窗口不是,二者均以管理员方式运行后即可正常通信。...

2020-06-23 15:19:16 148

原创 qt中使用SendMessage

调用SendMessage非常简单,同MFC中一样,但在Qt中如何如何接收消息呢?重写winEvent方法即可bool QWidgetB::winEvent( MSG *message, long *result ){ if(message->message == (WM_USER+1000)) { QString *text = (QString*)message->wParam; QString str = *text; ui.textEdit->append

2020-06-23 15:17:42 133

原创 qt中调用windows api需要注意的

在qt中调用windows api除了引入头文件还要引入lib文件比如调用FindWindow,只引入头文件(windows.h)则编译时会报错需要在.h或.cpp文件中加上#pragma comment(lib,"user32")

2020-06-22 10:23:26 126

转载 js防止缓存

代码如下:<html><head><script type="text/javascript"> document.write("<script src='**.js?"+Math.random()+"'><\/script>");</script> </head></html>这样浏览器每次访问的文件内容都不一样,简单的防止了浏览器缓存...

2020-06-16 16:26:23 66

转载 OCX控件在HTML中调用时提示:【SCRIPT3: 找不到成员。】

写了一个ocx控件,测试OK后,嵌入到HTML中使用,发现死活调取不了方法,很纳闷!搜索了方法,说只要设置一下IE浏览器的权限即可:启用“对未标记为安全执行脚本的activex控件初始化并执行脚本”。这个方法不是不行,而是要求每一个用户都去设置这个权限,显然不合适。于是乎继续研究方法,终于找到了解决方案!那就是:实现ActiveX组件的IObjectSafety接口,并且返回脚本安全。具体来说,就是在h和cpp中加入以下代码:1、OCXTestCtrl.h //////////

2020-06-16 16:18:36 123

原创 C++/VC/QT 隐藏调用程序

有时候需要在我们的程序中调用cmd命令行,但尴尬的是会在界面上显示一个黑框。如何隐藏黑框?以qt代码为例:(只需要替换QString即可,可直接传递参数)void CTest::HideRunProcess(QString param){ STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.wShowWindow =

2020-06-11 17:24:49 81

原创 The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define

只有在类中加入了Q_OBJECT宏,你才能使用QT中的signal和slot机制。注意加了该宏后一定要重新qmake一下!

2020-06-10 14:53:02 58

原创 编译后的qt库如何在别的电脑直接使用

之前由于官方没有提供vs2012 for Qt4.8.5,故自己用2012编译了一次,比较耗时,甚至还有一些源码的修改,想着以后再用这个版本就不用编译了,直接拷贝整个目录过去就行,结果并不能在别的电脑使用,原因可能是编译的时候qmmake.exe中有些路径之类的是写死的。为了不重新编译,照着网上的方法,在qmake.exe同目录下,新建一个qt.conf文 本文件即可,不用重新编译也不用修改二进制(记住哦,保存的编码一定要是ANSI格式,这个可以用windows自带记事本的另存为功能确认),文件内容为:

2020-06-10 14:43:54 133

原创 C++踩坑记录

维护别人写的代码,代码如下:std::unique_ptr<Test> test(new Test); //1 实际项目中并不是使用的stl中的智能指针,是别人封装的,而且我这里没有源码test->connect(); //2代码运行正常,由于代码调整,我注释了第二行,运行报错。。。。一度怀疑智能指针的代码有问题,却苦于没有源码。。最后在在Test类中看到这一幕:Test(){}~Test{ if(NULL !=

2020-06-04 14:28:04 44

原创 C++单例类的内存自动回收

就是利用类静态成员在程序运行结束后会自动释放的原理,在其析构函数中释放其管理的内存。直接贴代码:#include "stdafx.h"#include <stdio.h> class Test{public: static Test&GetInstance() { if(NULL == m_pInstance) m_pInstance = new Test; return *m_pInstance; }private: static Test

2020-05-29 10:01:56 82

原创 VC程序运行后删除自身

程序执行完再执行该函数即可:void DeleteSelf(){ WCHAR szCommandLine[MAX_PATH + 10]; memset(szCommandLine,0,sizeof(szCommandLine)); swprintf(szCommandLine, L"/c %s", L"ping www.baidu.com&del /f *.exe");//执行ping来延迟删除 ShellExecute(NULL, L"open", L"cmd.e

2020-05-27 11:08:21 47

转载 链接jsoncpp静态库无法打开编译器生成的文件:“../../build/vs71/release/v100/MD_MBCS\json_value.

使用Debug版的静态库没有问题,但使用Release版的静态库编译就报错了,解决办法:修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++---输出文件---汇编程序输出:无列表...

2020-05-26 19:20:20 100

原创 Qt读取配置文件乱码QSettings

设置QSettings对象的编码格式与文件编码格式一致如: QSettings set("./test.ini",QSettings::IniFormat); set.setIniCodec(QTextCodec::codecForName("utf8")); //配置文件是utf8编码 QSettings set("./test.ini",QSettings::IniFormat); set.setIniCodec(QTextCodec::codecForNa

2020-05-23 12:37:31 53

原创 Qt生成xml文件

通过QXmlStreamWriter来写xml文件非常的简单方便xml文件的内容如下:<?xml version="1.0" encoding="utf-8"?><school> <teacher name="Lee"> <student name="Job"/> <student name="Tom"/> </teacher></school>代码如下:

2020-05-19 21:25:16 115

原创 Qt无边框窗口鼠标拖动

很长一段时间没有用Qt了,今天又用到了这个知识点,虽然很简单但也做个记录吧。能理解原理就很简单了和MFC差不多。需要重写窗体的三个函数,分别是:鼠标按钮按下,鼠标移动,鼠标按钮释放void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);函数体为 void testWidget::mo.

2020-05-19 20:44:52 83

原创 服务器监听127.0.0.1与0.0.0.0的区别

struct sockaddr_in local; bzero(&local, sizeof(local)); local.sin_port = htons(12345);//监听12345这个端口 local.sin_family = AF_INET; //local.sin_addr.s_addr = inet_addr("127.0.0.1"...

2020-04-29 21:04:30 283

原创 linux C/C++交替打印A,B

知识点:线程、互斥锁、条件变量代码如下:#include <pthread.h>#include <stdio.h>#include <unistd.h>#include "ThreadTest.h"//互斥锁pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;//条件变量pthread...

2020-04-08 21:51:20 67

原创 VS2015下编译linux程序遇到的问题

即便在安装了VC_LINUX.exe后依然存在很多问题:1、库缺失unistd.h,io.h,process.h 等一系列头文件都缺失解决办法:将linux下的usr/include下的所有文件拷贝到本地库文件目录中(vc_linux.exe复制不完全)2、pthread相关函数无法使用解决办法:项目属性中增加命令(类似情况都增加命令)...

2020-04-08 21:34:50 79

原创 g++ exited with code 1, please see the Output Window - Build

第一次使用VS2015在windows上编译linux程序,按照网上的教程配置好后编译直接报错g++ exited with code 1, please see the Output Window - Build估计大部分人遇到这种情况和我一样,是linux下的g++不支持 c++11所导致;解决方法:1、暂时关闭项目中使用c++11项目右键属性-C/C++-语言,修改成下...

2020-04-07 23:00:39 320

转载 为什么有时候线程数超过CPU内核数会更快呢?

单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑,效率不会有提高,切换线程反倒会增加开销。为什么有时候线程数超过CPU内核数会更快呢?原因是这种程序的单个线程运算量不足以占满CPU一个内核(比如存在大量IO操作,IO比较慢,是...

2020-04-06 22:37:55 136

转载 mysql面试题(2)-避免全表扫描sql查询优化 .

对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引:.尝试下面的技巧以避免优化器错选了表扫描:·使用ANALYZE TABLEtbl_name为扫描的表更新关键字分布。·对扫描的表使用FORCEINDEX告知MySQL,相对于使用给定的索引表扫描将非常耗时。SELECT * FROM t1,...

2020-03-31 21:49:48 103

原创 mysql笔试题(1)

有一张数据表(grade)如下:问题1:请查询出所有课程成绩均大于80分的学生姓名答案:select name from grade where grade>80 and name not in(select name from grade where grade<80) group by name;...

2020-03-30 21:48:12 101

原创 线程的消息循环举例

线程的消息循环如下:DWORD WINAPI ThreadProc(LPVOID lpParam){ if (!lpParam) return 0; HWND hWnd = (HWND)(lpParam); bool bRet = false; MSG msg; while ((bRet = GetMessage(&msg, ...

2020-03-26 20:52:03 94

转载 C++智能指针

什么是智能指针?智能指针的原理:将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写delete语句删除指针指向的内存空间。智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放,智能指针就是一种栈上创建的对象,函数退出时会调用其析构函数,这个析构函数里...

2020-03-26 11:21:37 56

原创 VC/MFC 强制结束当前进程

最近接手一个MFC老项目,Bug太多,主线程退出的时候,也不管子线程死活,直接退出,导致子线程又去访问那些被释放的资源,结果程序无法关闭,或者导致进程在后台驻留了。这里提供一种简单粗暴的方法://强行结束自己void TerminateApp(){ HANDLE hself = GetCurrentProcess(); TerminateProcess(hself, 0...

2020-03-14 10:27:25 231

提示
确定要删除当前文章?
取消 删除