
MFC
MFC对话框使用中一些技巧和知识以及踩坑分享
youyicc
这个作者很懒,什么都没留下…
展开
-
MFC设置窗口最小尺寸
在对话框上添加事件 WM_GETMINMAXINFO在生成的函数中,添加如下代码:void CXXDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI){ // TODO: 在此添加消息处理程序代码和/或调用默认值 lpMMI->ptMinTrackSize.x = smallWidth; //最小宽度 lpMMI->ptMinTrackSiz...原创 2020-01-13 16:10:18 · 1572 阅读 · 0 评论 -
CStdioFile读写中文乱码
第一种:基于多字节的char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) ); setlocale( LC_CTYPE, "chs" );//文件读写操作setlocale( LC_CTYPE, old_locale ); free( old_locale );第二种:基于Uncode的wchar_t* pOldLocale = ...原创 2019-07-15 15:05:49 · 2033 阅读 · 0 评论 -
MFC 打开explorer浏览器后编辑框不能退格
废话不多说,直接上代码:在explorer的父类对话框中重写PreTranslateMessage函数,代码如下:BOOL CXXXXXXX::PreTranslateMessage(MSG* pMsg){ // TODO: 在此添加专用代码和/或调用基类 if (::IsChild(GetSafeHwnd(), pMsg->hwnd)){ TranslateMessage(...转载 2019-05-24 17:05:28 · 207 阅读 · 0 评论 -
MFC设置CEdit控件只能输入汉字、字符和数字
①首先继承CEdit类,实现CInPutEdit类,在CInPutEdit类中添加WM_CHAR消息②在OnChar函数中添加如下代码void CInPutEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){ // TODO: 在此添加消息处理程序代码和/或调用默认值 if (nChar <= '9' && nCh...原创 2019-05-15 17:36:04 · 2064 阅读 · 0 评论 -
给对话框绘制边框(线)
在OnPaint()函数中添加代码CDC* pWinDC = GetWindowDC();if (pWinDC){ DrawBorder(pWinDC); ReleaseDC(pWinDC);}添加并实现DrawBorder(CDC *pDC)if (m_hWnd && pDC!=NULL){ CBrush Brush(RGB(255,0.0)); //红色...原创 2019-04-18 10:55:31 · 831 阅读 · 0 评论 -
MFC无边框对话框鼠标拖动和缩放
三步实现MFC对话框Boder为None对话框鼠标拖动缩放功能。第一步,实现对话框的WM_NCHITTEST消息,代码如下:LRESULT CTestDlg::OnNcHitTest(CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CRect rect; GetWindowRect(&rect); if (point.x <=...原创 2019-02-22 10:04:41 · 1669 阅读 · 0 评论 -
MFC无边框对话框碰到屏幕边界最大化
关于无边框对话框实现鼠标拖动和鼠标拖拽缩放功能,请查看另一篇文章:https://mp.youkuaiyun.com/mdeditor/87872798#实现碰屏幕边界最大化功能很简单,但是网上很难找到对应的资料,在此记录一下,方便自己和其他人。实现对话框的WM_NCCALCSIZE消息,代码如下:void CTestDlg::OnNcCalcSize(BOOL bCalcValidRects, NCC...原创 2019-02-22 09:59:00 · 875 阅读 · 0 评论 -
控件自绘-DrawItem添加
DrawItem是一个虚函数,在类向导中在虚函数下面添加,如图:另外在消息里面也有一个DRAWITEM,如下图:按钮设置重绘代码 ModifyStyle(0, BS_OWNERDRAW);如果指定了重绘,但是没有实现重绘代码,程序运行就会崩溃。...原创 2019-01-21 15:41:36 · 2343 阅读 · 1 评论 -
MFC CTreeCtrl展开折叠事件
最近搞CTreeCtrl控件,发现只有节点展开事件,没有节点折叠事件,实际情况是展开和折叠走的是同一个事件TVN_ITEMEXPANDED(完成),要判断当前节点是展开还是折叠可以用下面的方法:if (TVIS_EXPANDED & GetItemState(hItem, TVIS_EXPANDED)){ //展开节点}else{ //折叠节点}另外,在TVN_ITEMEX...原创 2019-01-18 16:22:06 · 3066 阅读 · 5 评论 -
MFC中ListCtrl去掉表头
CListCtrl为报表(Report)类型时隐藏表头①在VC中设置CListCtrl的属性时,勾选“No column header”。②动态创建CListCtrl时,style中加上“LVS_NOCOLUMNHEADER”属性。原创 2019-01-16 14:23:01 · 3674 阅读 · 0 评论 -
MFC中配置GDI+
第一步:在stdafx.h中加入如下代码#include <gdiplus.h>#pragma comment(lib, "gdiplus.lib")using namespace Gdiplus;第二步:在C**App.h中加入成员变量和成员函数protected: ULONG_PTR m_gdiplusToken; GdiplusStartupInput gdip...原创 2019-01-10 16:49:10 · 414 阅读 · 0 评论 -
mfc创建隐藏对话框
通常有需求mfc主对话框创建一个子对话框(弹出式的对话框),但是弹出对话框必须要隐藏起来,等需要显示的时候才显示。尝试过在创建弹出对话框后调用ShowWindow(SW_HIDE);函数实现,但是界面始终会闪烁一下。网上找到的许多资料都说在子对话框的OnInitDialog()函数中添加ShowWindow(SW_HIDE);函数,也有说在OnInitDialog()函数中使用MoveWindow...原创 2019-01-07 14:30:56 · 2044 阅读 · 0 评论 -
MFC对话框滚动条的使用
本文转载自http://www.cnblogs.com/jdksummer/articles/2373285.html①设置对话框的vertical scrollbar属性为true;②在OnInitDialog中添加SCROLLINFO scrollinfo;GetScrollInfo(SB_VERT,&amp;scrollinfo,SIF_ALL);scrollinfo.nPage=...转载 2019-01-03 10:24:52 · 1012 阅读 · 0 评论 -
C++/MFC使用JSONCPP解析JSON字符串
第一步:首先下载jsoncpp源代码文件,代码可以从github下载 https://sourceforge.net/projects/jsoncpp/?source=typ_redirect 下载源码后解压后的目录如下:再依次打开\makefiles\vs71,双击jsoncpp.sln启动visual studio,解决方案如下,有三个项目,我们只需要编译lib_json即可。原创 2017-11-10 09:21:41 · 9070 阅读 · 0 评论