随笔分类 - MFC
摘要:IDC_PIC_TEST是PictureControl控件的ID CRect mouseROI; GetDlgItem(IDC_PIC_TEST)->GetWindowRect(mouseROI); //桌面左上角是0,0 ScreenToClient(&mouseROI); //转换后,控件以客户
阅读全文
摘要:效果如下: 原理,以宽高比图像(红色)<控件(蓝色)为例,即图更竖长。让l移到l'处、r移到r'处,即求下图中x即可。 注意,图中除x以外,都指的是像素位置(上下左右的意思,而不是边长)。 代码如下:CImage image在头文件里,m_IDCpic是Picture Control控件鼠标右键创建
阅读全文
摘要:1、Windows下的程序都是基于消息的,窗口在创建时都会产生一个WM_CREATE消息。其他类可以响应这个消息,添加WM_CREATE消息的处理函数。 类视图——某个类处鼠标右键,属性——消息(找到WM_CREATE)。或者使用“类向导”。 2、文档/视类结构,视类窗口始终覆盖在框架类窗口之上,鼠
阅读全文
摘要:推荐前者。 unicode字符集 —— 多字节字符集。 wchar_t —— char wstring —— string CStringW —— CStringA,CString可以依据字符集自动转换CStringW/CStringA LPWSTR(即wchar_t*)—— LPSTR(即char
阅读全文
摘要://选择图片 CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("image Files(*.bmp; *.jpg;*.png)|*.JPG;*.PNG;*.BMP|All Files (*.*) |*.*||"), this); //打开文件选择窗体
阅读全文
摘要://E盘根目录创建以时间命名的文件夹,其中再建4个子文件夹 CString strTime = CTime::GetCurrentTime().Format("%Y%m%d");//获取当前时间 CString strPath = _T("E:\\" + strTime);//路径 if (!PathIsDirectory(strPath))//不存在则创建 ...
阅读全文
摘要:HWND是Windows系统中的窗口句柄,CWnd是MFC中的窗体类,两者的所属不同。CWnd对HWND进行了封装类,更加高级也更加简化。 HWND是Window内核处理对象,系统通过HWND进行操作,而我们则更多的通过CWnd提供的函数来间接操作HWND。 HWND是CWnd类的组成部分,CWnd
阅读全文
摘要:新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数
阅读全文
摘要:新建单个文档的MFC应用程序,类视图——View项的属性——消息,WM_PAINT,创建OnPaint()函数 dc默认有一个画笔(实心1像素宽黑线)。 CPen画笔非实心线像素宽必须为1,否则膨胀接到一起,与实心线没有差异。 CBrush画刷,用来填充封闭区域,默认白色填充。
阅读全文
摘要:CWinThread* p_myThread;//创建线程指针 BOOL flag_myThread = FALSE;//是否终止 //头文件中声明(放类内) static UINT MyThreadFunction(LPVOID pParam);//定义线程入口函数 UINT CMFCApplication25Dlg::MyThreadFunction(LPVOID pParam) //线程入口
阅读全文
摘要:线程函数必须是全局函数或静态成员函数。 非静态成员函数都有一个隐含的参数用于接收所属类的this指针,一般情况下调用时参数不匹配。所以static可以干掉隐含的参数。 但是没有了this,类内的函数就无法调用了。所以AfxBeginThread(线程函数,(LPVOID)this),this又回来了
阅读全文
摘要:【线程的创建】 AfxBeginThread(类外的线程函数,NULL); AfxBeginThread(类内的线程函数,(LPVOID)this); 【类外线程函数】 UINT 函数名(LPVOID pParam);//头文件中声明,放类外 UINT MyThreadA(LPVOID pParam
阅读全文
摘要:创建项目由向导生成的窗体作为工作的主窗体。用户登录、注册窗体添加对话框来实现。 【具体功能】 1、主窗体应该出现在登录窗体成功之后。 2、登录窗体关闭(右上角❌),程序直接退出。 在App.cpp的InitInstance()内起始处加入代码 用户登录对话框 用户注册对话框
阅读全文
摘要:自带的标签页不好用,因此借助了TabSheet文件TabSheet源码 1、在解决方案资源管理器——项目处鼠标右键——在文件资源管理器中打开文件夹(或者按下图,更方便),把TabSheet.h、TabSheet.cpp拷贝进去。 2、在解决方案资源管理器——项目处鼠标右键——添加现有项,把TabSh
阅读全文
摘要:Tree Control属性:Has Buttons、Has Lines、Lines At Root这三个设为True 常用的事件:SelectChanged() ico图片放到项目的res文件夹中(防止拷贝丢失),之后,资源视图——Icon处添加资源——Icon导入 以下是SelectChange
阅读全文
摘要:一般用带有表头的报表模式,所以属性:View设为Report 【参考】https://www.bilibili.com/video/av52921336?p=16
阅读全文
摘要:下拉框常用的事件是Change事件。属性常用:Data(英文;分隔),Sort(是否排序) 【参考】https://www.bilibili.com/video/av52921336?p=15
阅读全文
摘要:Edit Control控件,默认状态下,按回车会调用OnOK()关闭窗体。解决此bug可以,类视图中单击CMFCApplication3Dlg,下方重写OnOK(),注释掉其中的代码即可。 Edit Control控件的属性Multiline与Want Return一致设为TRUE或FALSE C
阅读全文
摘要:窗体上操作控件内容,需要句柄,在控件处使用鼠标右键——添加变量。 DoDataExchange()函数会自动生成代码,把ID与变量绑定(即DDX_Control(pDX, IDC_TEXT, objText);),让变量具有句柄功能(其实头文件中自动定义了控件对象private: CStatic o
阅读全文