mfc

基于MFC的简单串口通信(针对单片机简单通信)

二次信任 提交于 2020-01-11 00:04:15
最近由于项目需要自学了MFC的界面设置(初学者),在基本功能设置完成之后,老大觉得并不需要了,也就没被采纳。但我觉得还是以博客的形式写出来,既能回顾一下学习过程,又能帮助大家。 开发环境 MFC的开发环境是Visual C++,也叫VC++。MFC(Microsoft Foundation Classes)是微软基础类库的简称,是一个微软实现的C++类库,主要封装大部分的Windows API函数,并且包含一个应用程序框架,以减少应用程序开发人员工作量。MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll。xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的东西,但是由于是通用框架,没有最好的针对性,当然也就丧失了一些灵活性和效率但是MFC的封装很浅,所以效率上损失不大,灵活性还可以,虽然也有很多缺陷,但还是一个比较好的东西。 附上vc++安装包以及其他资料 链接:https://pan.baidu.com/s/14lo6nnW7aficYnDEENWfqA 提取码:9ydy 复制这段内容后打开百度网盘手机App,操作更方便哦 控件布局与设置 解压缩完成并安装完成后,我们就开始建立MFC界面。 1

MFC中命令(Command)和消息(Message)的区别

*爱你&永不变心* 提交于 2020-01-10 20:48:09
MFC中命令(Command)和消息(Message)的区别 消息 能接收WM_窗口消息的对象必须继承自 CWnd 消息的处理函数是由消息映射中的 ON_COMMAND 绑定的函数来处理的 命令 能接收WM_COMMAND的对象都继承自 CCmdTarget (CWnd的父类) 命令的处理函数是由预定义的 WM_ 消息的处理程序 来处理的 来源: CSDN 作者: 海将河推走 链接: https://blog.csdn.net/weixin_43669941/article/details/103929566

C++ string memory management

断了今生、忘了曾经 提交于 2020-01-10 08:29:10
问题 Last week I wrote a few lines of code in C# to fire up a large text file (300,000 lines) into a Dictionary. It took ten minutes to write and it executed in less than a second. Now I'm converting that piece of code into C++ (because I need it in an old C++ COM object). I've spent two days on it this far. :-( Although the productivity difference is shocking on its own, it's the performance that I would need some advice on. It takes seven seconds to load, and even worse: it takes just exactly

MFC:获取和设置控件文本(GetDlgItemText和SetDlgItemText)

梦想与她 提交于 2020-01-10 02:00:14
GetDlgItemText: 获取给定控件的文本。 语法 virtual int GetDlgItemText ( int nID, LPTSTR lpStr, int nMaxCount ) const ; 参数 nID :控件的标识符,也就是控件的ID。 lpStr :与控件文本的指针,也就是控件文本中的内容,你需要获取的东西。 nMaxCount :在字符指定最大长度,要复制的,该字符串就缓冲区指向由 lpStr 。如果该字符串的长度超过限制,字符串被截断。 返回值 如果函数成功,则返回值指定字符数复制到缓冲区,不包括终止null字符)。 如果函数失败,则返回值为零。若要扩展的错误信息,调用 GetLastError 。 示例 CString str_id (_T( "" ) ) ; GetDlgItemText(IDC_EDIT_ID, str_id); //获取帐号 CString str_password (_T( "" ) ) ; GetDlgItemText(IDC_EDIT_PASSWORD, str_password); //获取密码 SetDlgItemText:将指定控件的文本,使用在 lpszString 包含的文本。 语法 virtual void SetDlgItemText ( int nID, LPCTSTR lpszString ) ; 参数

MFC,ListBox使用

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-10 01:53:17
istBox 窗口用来列出一系列的文本,每条文本占一行。创建一个列表窗口可以使用成员函数: BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff ); 其中 dwStyle 将指明该窗口的风格,除了子窗口常用的风格 WS_CHILD,WS_VISIBLE 外,你可以针对列表控件指明专门的风格。 LBS_MULTIPLESEL 指明列表框可以同时选择多行 LBS_EXTENDEDSEL 可以通过按下 Shift/Ctrl 键选择多行 LBS_SORT 所有的行按照字母顺序进行排序 在列表框生成后需要向其中加入或是删除行,可以利用: int AddString( LPCTSTR lpszItem ) 添加行, int DeleteString( UINT nIndex ) 删除指定行, int InsertString( int nIndex, LPCTSTR lpszItem ) 将行插入到指定位置。 void ResetContent( ) 可以删除列表框中所有行。 通过调用 int GetCount( ) 得到当前列表框中行的数量。 如果需要得到 / 设置当前被选中的行,可以调用 int GetCurSel( )

VS2008新建MFC程序时提示:当前页面的脚本发送错误 不是有效的Win32应用程序的解决办法

徘徊边缘 提交于 2020-01-09 22:52:59
错误现象: 解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示地方,注释掉其中两句语句,如433和434行所示。一般在该文件的最后面。 然后保存文件,重新新建win32控制台程序。 3.其它地方出现脚本错误,以此类推,修改上面那二句代码后保存即可。 解决方案: 1.根据错误信息中的url,找到对应文件夹下的htm文件 2.使用notepad++打开default.htm文件,找到错误提示地方,注释掉其中两句语句,如433和434行所示。一般在该文件的最后面。 然后保存文件,重新新建win32控制台程序。 3.其它地方出现脚本错误,以此类推,修改上面那二句代码后保存即可。 来源: https://www.cnblogs.com/rainbow70626/p/12173588.html

Adding #include <boost/thread/mutex.hpp> breaks my ActiveX control?

守給你的承諾、 提交于 2020-01-09 10:48:09
问题 Is there a known problem with the boost::mutex header when used inside an ActiveX control? (Boost version v1.39) If I create an MFC ActiveX Control project in Visual Studio 2008 called "DefaultOCXControl" then I can build it, the control registers itself as part of the build, and can be inserted into the ActiveX Test Container as you would expect. All good. If I then just add this line: #include <boost/thread/mutex.hpp> at the top of my DefaultOCXControlCtrl.h file and rebuild: the

Difference between a C++ exception and Structured Exception

巧了我就是萌 提交于 2020-01-09 04:22:27
问题 Can someone explain the difference between a C++ exception and a structured exception in MFC? 回答1: You actually have three mechanisms: C++ exceptions, implemented by the compiler ( try / catch ) Structured Exception Handling (SEH), provided by Windows ( __try / __except ) MFC exception macros ( TRY , CATCH - built on top of SEH / C++ exceptions - see also TheUndeadFish's comment) C++ exceptions usually guarantee automatic cleanup during stack unwinding (i.e. destructors of local objects run),

MFC文件操作详解

情到浓时终转凉″ 提交于 2020-01-09 02:49:19
各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。   1.文件的查找   当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。   CString strFileTitle;   CFileFind finder;   BOOL bWorking = finder.FindFile("C:\windows\sysbkup\*.cab");   while(bWorking)   {   bWorking=finder.FindNextFile();   strFileTitle=finder.GetFileTitle();   }   2.文件的打开/保存对话框   让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存

MFC集合类的使用

心已入冬 提交于 2020-01-09 02:46:55
CStringArray用法: 列表框:m_list 单选按钮:m_radio int(指其中一个属性设置为:组) 文本框:m_pos int 、m_str CString 按钮:OnCheck() 1、创建基于对话框的工程StringArray. 2、在CStringArrayDlg构造函数中添加: public: CStringArray m_array; 3、按钮单击事件:OnCheck代码 void CStringArray1Dlg::OnCheck() { UpdateData(true); switch(m_radio) { int i; case 0: if(m_pos < 0 || m_pos > m_array.GetSize()) { AfxMessageBox("数组位置不正确!"); return; } if(m_str.IsEmpty()) { AfxMessageBox("输入信息不能为空!"); return; } m_array.InsertAt(m_pos,m_str); m_list.ResetContent();//清空列表框 for(i = 0; i<m_array.GetSize(); i++) { m_list.AddString(m_array.GetAt(i)); } m_str = ""; m_pos = m_array