<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bmjhappy的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bmjhappy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bmjhappy]]></copyright><item><title><![CDATA[org.junit.platform.commons.JUnitException: Failed to parse version of junit:junit: 4.13.1]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/118882453</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/118882453</guid><author>bmjhappy</author><pubDate>Sun, 18 Jul 2021 21:42:13 +0800</pubDate><description><![CDATA[第一种情况：

解决方法：可能是pom.xml的文件有问题


&lt;/dependency&gt;
   &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
            &lt;scope&gt;test&lt;/scope&gt;
            &lt;exclusions&]]></description><category></category></item><item><title><![CDATA[VS下如何调试程序]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/109225793</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/109225793</guid><author>bmjhappy</author><pubDate>Thu, 22 Oct 2020 17:03:53 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/qq_35637562/article/details/79369034

程序崩溃的原因分类

函数栈溢出
	一个变量未初化、未赋值，就读取它的值。
	（ 这属于逻辑问题，往往是粗心大意的导致的 ）
	函数栈溢出
	（1）定义了一个体积太大的局部变量
	（2）函数嵌套调用，层次过深（如无穷递归）
	数组越界访问
	访问数组元素时，下标越界
	指针的目标对象不可用
	（1）空指针
	（2）野指针
	指针未赋值
		free/delete释放了...]]></description><category></category></item><item><title><![CDATA[深入了解Debug和Release的区别]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/109225469</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/109225469</guid><author>bmjhappy</author><pubDate>Thu, 22 Oct 2020 16:46:33 +0800</pubDate><description><![CDATA[原文地址：https://blog.youkuaiyun.com/sky___ice/article/details/8993885

一：

Bin 目录用来存放编译的结果，bin是二进制binrary的英文缩写，因为最初C编译的程序文件都是二进制文件，它有Debug和Release两个版本，分别对应的文件夹为bin/Debug和bin/Release，这个文件夹是默认的输出路径，我们可以通过：项目属性—&gt;配置属性—&gt;输出路径来修改。
　　obj是object的缩写，用于存放编译过程中生成的中间临时...]]></description><category></category></item><item><title><![CDATA[PostMessage和SendMessage的区别]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/109220257</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/109220257</guid><author>bmjhappy</author><pubDate>Thu, 22 Oct 2020 13:40:29 +0800</pubDate><description><![CDATA[PostMessage：不需要指定接收消息的窗口，但是消息只能发往本窗口
  ::PostMessage：需要指定接收消息的窗口，但是消息可以发往任意窗口

  SendMessage:将消息直接发送给窗口，并调用该窗口的窗口过程进行处理。在窗口过程对消息处理完毕之后，该函数才返回（SendMessage发送的消息不进入队列）。

  PostMessage函数将消息放入创建窗口的线程相关联的消息队列后立即返回。除了这两个函数之外，还有一个

PostThreadMessage函数，用于向线程发...]]></description><category></category></item><item><title><![CDATA[VC++内存泄漏的检测与定位]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/108242806</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/108242806</guid><author>bmjhappy</author><pubDate>Wed, 26 Aug 2020 16:44:01 +0800</pubDate><description><![CDATA[VC++内存泄漏的检测与定位



转发原文地址：http://blog.sina.com.cn/s/blog_45eaa01a0102uy4i.html



本文大部分内容来自网络，只是做了适当的修改和补充，以便更贴近实际应用。



一 对于MFC程序

如果检测到存在内存泄漏，退出程序的时候会在调试窗口提醒内存泄漏。例如：

class CMyApp : public CWinApp

{

public:

BOOL InitApplication()

{

int* leak = new...]]></description><category></category></item><item><title><![CDATA[VC中如何打开Com10及以上的串口]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/108219214</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/108219214</guid><author>bmjhappy</author><pubDate>Tue, 25 Aug 2020 13:29:47 +0800</pubDate><description><![CDATA[今天用以前的一个串口程序，发现串口怎么也打不开。因为用的串口不是常规的COM1、COM2而是大于Com10的端口，想着是很简单的增加几个选项就可以轻松搞定的，结果加上后测试，发现总是初始化失败，调试发现在CreateFile里总是失败，找到MSDN一看果然这里有区别。
 Win32 API函数CreateFile()除了可打开普通文件外，还可以打开设备，比如可用于打开串口，获得串口句柄。使用CreateFile()函数打开串口时文件共享模式应设置为0（表示独占），创建参数设置为OPEN_EXISTING..]]></description><category></category></item><item><title><![CDATA[C++ map用法总结（整理）]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/108121908</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/108121908</guid><author>bmjhappy</author><pubDate>Thu, 20 Aug 2020 13:43:07 +0800</pubDate><description><![CDATA[1，map简介

map是STL的一个关联容器，它提供一对一的hash。

第一个可以称为关键字(key)，每个关键字只能在map中出现一次；
	第二个可能称为该关键字的值(value)；

map以模板(泛型)方式实现，可以存储任意类型的数据，包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況，map內部的实现自建一颗红黑树，这颗树具有对数据自动排序的功能。在map内部所有的数据都是有序的，后边我们会见识到有序的好处。比如一个班级中，每个学生的学号跟他的姓名就存在著一对]]></description><category></category></item><item><title><![CDATA[VS2008和VS2010再次修改菜单栏修改无效]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/107486787</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/107486787</guid><author>bmjhappy</author><pubDate>Tue, 21 Jul 2020 13:29:41 +0800</pubDate><description><![CDATA[某些时候，在运行已经写好的菜单栏后，再次对菜单栏进行修改，并运行时发现，菜单栏没有改变。还保存着上一次的结果

解决办法：

在工程的APP类中，在ExitInstance()函数里，


C/C++ code


int CXCApp::ExitInstance()
{

  //...........
  this-&gt;CleanState();
  return CWinAppEx::ExitInstance();
}



添加 this-&gt;CleanState();
...]]></description><category></category></item><item><title><![CDATA[用JPEXS软件实现swf反编译-逆向调试方法]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/107403804</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/107403804</guid><author>bmjhappy</author><pubDate>Fri, 17 Jul 2020 11:16:22 +0800</pubDate><description><![CDATA[最近对某文档网站的一个PageViewer.swf文件进行逆向工程，学习了一些swf文件反编译的方法。

                                       第一部分 配置                                                  
安装firefox debug...]]></description><category></category></item><item><title><![CDATA[MFC 使用计时器]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106896481</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106896481</guid><author>bmjhappy</author><pubDate>Mon, 22 Jun 2020 10:09:42 +0800</pubDate><description><![CDATA[转载：http://blog.sina.com.cn/s/blog_7656589b0101g30h.html

最简单的开始写，毫秒级时钟。



用CWnd::SetTimer设置定时器，然后在窗口上添加WM_TIMER事件，接下来实现OnTimer响应函数就可以了...

SetTimer(1,1,NULL); // 第一个是定时器标号，第二个是每隔多长时间运行一次，单位毫秒，第三个本来是定时器处理函数的，这里用NULL的意思是直接使用OnTimer响应函数...

void OnTimer( UIN]]></description><category></category></item><item><title><![CDATA[配置信息写入到.ini文件中的方法]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106835696</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106835696</guid><author>bmjhappy</author><pubDate>Thu, 18 Jun 2020 15:55:01 +0800</pubDate><description><![CDATA[在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下:
　　
一.将信息写入.INI文件中 　　
1.所用的WINAPI函数原型为: 　　
BOOL WritePrivateProfileString( 　　LPCTSTR lpAppName, 　　LPCTSTR lpKeyName, 　　LPCTSTR lpString, 　　LPCTSTR lpFileName 　　); 　　
其中各参数的意义 　　
LPCT]]></description><category></category></item><item><title><![CDATA[窗口置顶（置于桌面所有程序之上）&VC/MFC 怎么将窗口置顶]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106834668</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106834668</guid><author>bmjhappy</author><pubDate>Thu, 18 Jun 2020 15:11:50 +0800</pubDate><description><![CDATA[软件界面全屏显示后，需要把窗体置于其他桌面程序之上，但总是置于其他弹出框之下，会造成用户忽略了导致用户不明什么原因。

百度查了好多方法总是失败。

后来查到了CSND的一个帖子http://bbs.youkuaiyun.com/topics/380000316

试了以下方法便成功了，现把方法公布于下：

在窗体的初始化函数OnInitDialog()中添加以下一句代码

::SetWindowPos(this-&gt;m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SW]]></description><category></category></item><item><title><![CDATA[Cstring中的 Find()、Mid()、Replace() 用法]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106260756</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106260756</guid><author>bmjhappy</author><pubDate>Thu, 21 May 2020 16:35:05 +0800</pubDate><description><![CDATA[1、CString::Find

在一个较大的字符串中查找字符或子字符串 ，返回此CString对象中与需要的子字符串或字符匹配的第一个字符的从零开始的索引；如果没有找到子字符串或字符则返回-1。


int Find( TCHAR ch ) const; 　　
int Find( LPCTSTR lpszSub ) const; 　　
int Find( TCHAR ch, int nStart ) const; 　　
int Find( LPCTSTR pstr, int nStart ) ...]]></description><category></category></item><item><title><![CDATA[MFC屏蔽指定按键]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106217884</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106217884</guid><author>bmjhappy</author><pubDate>Tue, 19 May 2020 16:44:32 +0800</pubDate><description><![CDATA[//重写PreTranslateMessage函数

BOOL CEventCollectWareDlg::PreTranslateMessage(MSG* pMsg)

{
// TODO: 在此添加专用代码和/或调用基类


if (pMsg-&gt;message == WM_KEYDOWN)  
{
if(pMsg-&gt;wParam == VK_ESCAPE || pMsg-&gt;wParam == VK_RETURN)//屏蔽ESC和ENTER键
return TRUE;
}

if ...]]></description><category></category></item><item><title><![CDATA[MFC中，通过preCreateWindow函数无法设置视图样式（包括窗口的大小）]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106217745</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106217745</guid><author>bmjhappy</author><pubDate>Tue, 19 May 2020 16:43:06 +0800</pubDate><description><![CDATA[参考上一条：https://mp.youkuaiyun.com/console/editor/html/106217002

直奔主题：有时候我们在CMainFrame::PreCreateWindow(CREATESTRUCT&amp; cs)修改如下代码发现不起作用

方法1：


BOOL CMainFrame::PreCreateWindow(CREATESTRUCT&amp; cs)
{
	if( !CMDIFrameWndEx::PreCreateWindow(cs) )
		return FALSE;
	]]></description><category></category></item><item><title><![CDATA[mfc窗口去掉标题栏、边框和菜单栏]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/106217002</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/106217002</guid><author>bmjhappy</author><pubDate>Tue, 19 May 2020 16:28:46 +0800</pubDate><description><![CDATA[系统:window xp sp3

编译器:visual studio 2010

项目:基于对话框的MFC应用程序

编译器:vs 2010

所使用函数:

//去除标题栏及其他样式

SetWindowLong(m_hWnd,GWL_STYLE,WS_OVERLAPPED);
//去除边框及其他样式
SetWindowLong(m_hWnd,GWL_EXSTYLE,WS_EX_LTRREADING);
//使SetWindowLong函数的更改生效,如果不使用此函数,去除边框后

//窗口四周...]]></description><category></category></item><item><title><![CDATA[attempted an unsupported operation 、an unsupported operation was attempted [尝试不支持的操作]错误的三种解决方案]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/105794034</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/105794034</guid><author>bmjhappy</author><pubDate>Mon, 27 Apr 2020 16:47:36 +0800</pubDate><description><![CDATA[在修改MFC程序的时候突然出现了attempted an unsupported operation的错误，发现是由于修改了资源ID导致，该错误是由找不到相关资源ID导致。
    一般这个是资源ID导致的，但是我这次的问题却不是，我的是缺少程序里需要运行的flash插件。在win7系统下是会提示缺少FLASH播放器。在win10俄语系统下就是不提示缺少播放插件，编译时一切正...]]></description><category></category></item><item><title><![CDATA[VS2010转到定义操作技巧]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/105792609</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/105792609</guid><author>bmjhappy</author><pubDate>Mon, 27 Apr 2020 15:55:19 +0800</pubDate><description><![CDATA[VS2010编辑的时候，右键选择函数或变量转到定义的时候，VS2010非常弱智的在下面显示查找符号结果，少则两项，多则几十上百项，至少要再去选一次，非常的不方便。

VAssistX的转到定义(Goto Implemention）比较智能精准。可以通过快捷键ALT+G使用。

我习惯使用右键的上下文菜单，可装好VAssistx后，如下操作：

工具-&gt;自定义-&gt;命令-&gt;上下文菜单...]]></description><category></category></item><item><title><![CDATA[VS文件清理工具--只用于VS--MFC项目]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/105792501</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/105792501</guid><author>bmjhappy</author><pubDate>Mon, 27 Apr 2020 15:54:12 +0800</pubDate><description><![CDATA[1，这个项目在是删除project下的debug目录及其文件夹，还有ipch文件，sdf文件，是用mfc开发的。2，值得一提的是用到了vector 注册表还有 拖拽api ，用vector来保存ipch debug sdf文件，然后将其删除，注册表主要用到了，注册注册表删除注册表 ，查询键值，主要是为了操作project路径拖拽也是为了project获取路径。3.特色就是只需写入project...]]></description><category></category></item><item><title><![CDATA[vs工程中哪些文件可以删除]]></title><link>https://blog.youkuaiyun.com/bmjhappy/article/details/105792337</link><guid>https://blog.youkuaiyun.com/bmjhappy/article/details/105792337</guid><author>bmjhappy</author><pubDate>Mon, 27 Apr 2020 15:49:42 +0800</pubDate><description><![CDATA[VS使用中，在压缩源代码的时候，会发现工程目录几百M，里面有很多的垃圾文件，可以自己写bat.

del *.ncb /f /s
del *.plg /f /s
del *.pch /f /s
del *.idb /f /s
del *.ilk /f /s
del *.pdb /f /s
del *.obj /f /s
del *.exp /f /s
del *.aps /f /s
del *.o...]]></description><category></category></item></channel></rss>