MFC学习中遇到的问题集合
来源:互联网 发布:淘宝延长收货如何设置 编辑:程序博客网 时间:2024/05/18 00:09
Q1:限制窗口大小
A1:类向导-》消息-》重载WM_GetMinMaxInfo-》填入代码
lpMMI->ptMinTrackSize.x = 500; // 设定最小跟踪宽度 lpMMI->ptMinTrackSize.y = 400; // 设定最小跟踪高度 lpMMI->ptMaxTrackSize.x = 500; // 设定最大跟踪宽度 lpMMI->ptMaxTrackSize.y = 400; // 设定最大跟踪高度
Q2:MFC图片控件显示图片
A2:
//动态加载
int cx, cy;CImage image;CRect rect;//根据路径载入图片image.Load(L"main.bmp");//获取图片的宽 高度cx = image.GetWidth();cy = image.GetHeight();//获取Picture Control控件的大小GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);//将客户区选中到控件表示的矩形区域内ScreenToClient(&rect);//窗口移动到控件表示的区域GetDlgItem(IDC_STATIC1)->MoveWindow(rect.left, rect.top, cx, cy, TRUE);CWnd *pWnd = NULL;pWnd = GetDlgItem(IDC_STATIC1);//获取控件句柄pWnd->GetClientRect(&rect);//获取句柄指向控件区域的大小CDC *pDc = NULL;pDc = pWnd->GetDC();//获取picture的DCimage.Draw(pDc->m_hDC, rect);//将图片绘制到picture表示的区域内ReleaseDC(pDc);
//静态加载
/首先添加资源-》Bitmap-》导入-》选择图片-》资源视图-》记录rc中Bitmap的ID-》添加picture control控件并设置ID-》在OnPaint()函数里面添加下面代码/
//从资源中加载图片 CBitmap bitmap;//加载指定位图资源 Bmp图片ID bitmap.LoadBitmap(IDB_BITMAP1);//获取对话框上的句柄 图片控件ID CStatic *p = (CStatic *)GetDlgItem(IDC_STATIC1);//设置静态控件窗口风格为位图居中显示 p->ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);//将图片设置到Picture控件上 p->SetBitmap(bitmap);
Q3:MFC程序内存泄漏检测方法(debug):
A3:
1.在 CMyApp 中添加如下三个 CMemoryState 类的成员变量:
#ifdef _DEBUGprotected: CMemoryState m_msOld, m_msNew, m_msDiff;#endif // _DEBUG
2.在 CMyApp::InitInstance() 中添加如下代码:
#ifdef _DEBUG m_msOld.Checkpoint();#endif // _DEBUG
3.在 CMyApp::ExitInstance() 中添加如下代码:
#ifdef _DEBUG m_msNew.Checkpoint(); if (m_msDiff.Difference(m_msOld, m_msNew)) { afxDump<<"\nMemory Leaked :\n"; m_msDiff.DumpStatistics(); afxDump<<"Dump Complete !\n\n"; }#endif // _DEBUG
Q4:mfc查看内存泄露
A4:Debug版本程序运行结束后如有内存泄漏,输出窗口中会显示类似信息:
Memory Leaked :
0 bytes in 0 Free Blocks.
8 bytes in 1 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 8825 bytes.
Total allocations: 47506 bytes.
Dump Complete !
Detected memory leaks!
Dumping objects ->
g:\programs\chat\chatdlg.cpp(120) : {118} normal block at 0x00D98150, 8 bytes long.
Data: < > A8 7F D9 00 01 00 00 00(这里表示有泄露)
Object dump complete.
Q5:UpdateData
A5:
UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。
UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。
Q6:Run-Time Check Failure #2 - Stack around the variable ” was corrupte
A6:一般情况是越界(如数组)
Q7:list control
A7:添加变量名m_list;
设置列表头:
m_list.InsertColumn(0,"用户名:",LVCFMT_LEFT,147);m_list.InsertColumn(1, "密码:", LVCFMT_LEFT, 147);/*其参数依次表示:列号,列标题, 对齐方式,列宽*/
添加值:
m_list.InsertItem(0, num);m_list.SetItemText(0,1, pass);
设置风格:
m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);
/*LVS_EX_FULLROWSELECT 选中某行使整行高亮(只适用与report风格的listctrl)
LVS_EX_GRIDLINES 网格线(只适用与report风格的listctrl)
LVS_EX_CHECKBOXES item前生成checkbox控件*/
删除i项: int nItemCount=m_list.GetItemCount();/*获取项数*/
m_list.DeleteItem(i);/*删除i项*/
删除全部:m_list.DeleteAllItems();
添加右键响应:鼠标右键-》添加事件处理程序-》消息类型按下面需求选、类列表选好
/*LVN_COLUMNCLICK在单击列表的标题栏才响应;
NM_CLICK是在单击一个的列表项才响应。
HDN_ITEMCLICK是标题栏的单击事件。
NM_DBLCLK是在右键双击一个的列表项才响应。*/
获取右键选中项内容:在上面添加的函数里面添加下面代码:
CString strText;POSITION pos = m_mpfriends_friendslist.GetFirstSelectedItemPosition();if (pos != NULL){ int nItem = m_mpfriends_friendslist.GetNextSelectedItem(pos); strText = m_mpfriends_friendslist.GetItemText(nItem, 0); MessageBox(strText);}
插入一行多列只显示第一列原因:SetItemText()之前没有进行InsertItem()(这个最好在oninitdialog()里面)
Q8:显示窗口
A8:
非模态对话框显示窗口(优势:还可以操作原窗口):
CMpchat *chatpanel;chatpanel = new CMpchat;chatpanel->Create(IDD_MP_CHAT, this);/*参数说明:第一个参数为资源视图中dialog的CMpchat的ID*/ chatpanel->ShowWindow(SW_SHOW);/*记住要delete*/
模态对话框:
CMpchat chatpanel;chatpanel.DoModal();
Q9:MFC程序开发时,经常会出现没有最大和最小化按钮的问题
A9:在窗口文件右击-属性-System Menu,设置为true。
Q10:CString汉字怎么存到char*
A10:
WideCharToMultiByte(CP_ACP, 0, m_chatedit/*CString*/, -1, LG.nDATA/*char数组*/, t/*CString.GetLength()*/*2 + 1, NULL, NULL);
Q11:edit control控件中‘\n’换行符无效
A11:请尝试 ‘\r\n’
Q12:Csocket服务器接收文件时锁住了ui,程序正常运行
A12:可能前面出现了EnableWindow(false);需要在结束的地方添加EnableWindow(true);
- MFC学习中遇到的问题集合
- 学习VC、MFC中遇到的各种问题及解决办法
- 在mongoDB学习中遇到的各种问题集合
- mfc串行化中遇到的问题
- MFC中遇到的一些问题
- mfc编程中遇到的一些问题
- MFC编程中遇到的问题记录
- MFC中遇到的一些问题
- 工作中遇到的一些问题集合
- MFC 遇到的问题
- 学习中遇到的问题
- 学习中遇到的问题
- mfc多线程学习运行过程中遇到ASSERT问题
- 【问题集合】开发过程中遇到的问题
- MFC学习之 创建ActiveX控件 遇到的问题
- 在WIN32 DLL中使用MFC库遇到的问题
- 在MFC中使用OCX控件遇到的一个问题
- mfc中使用网络层遇到的问题
- JavaWeb开发入门
- 【Kaggle笔记】预测泰坦尼克号乘客生还情况(决策树)
- tiny4412 时钟测试
- C++ 使用STL时自定义比较函数cmp
- 一致性 hash 算法( consistent hashing )
- MFC学习中遇到的问题集合
- Java并发(七)线程的对象锁
- Hadoop渐进五:Hadoop I/O(Sequence, Map, Set...)
- 目标检测之YOLO
- 拷贝构造函数
- mybatis的SqlMapConfig.xml文件的详细配置
- 获取指定应用的名称、版本等信息
- word转html
- 数据类型_类型,变量,成员;以及typedef