那些年,mfc开发中要注意的一些小细节

1、给你的窗口加上最下化按钮,方法:设置窗口的Minimize Box属性为true

2、若你的窗口不需要改变大小,方法:设置窗口的Border属性为Dialog Frame

3、若你的窗口为主窗口,考虑过滤掉回车和ESC操作

         方法:实现虚函数PreTranslateMessage  

BOOL XXXXDlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类
	if(pMsg->message == WM_KEYDOWN)
	{
		if(int(pMsg->wParam) == VK_ESCAPE || int(pMsg->wParam) == VK_RETURN)
		{
			return TRUE;
		}
	}
	return CDialogEx::PreTranslateMessage(pMsg);
}

4、若你的窗口为主窗口,考虑在窗口退出时要弹出提示

            方法:给窗口加上这个消息的实现(WM_CLOSE)

5、如果有配置文件,考虑配置文件名字跟你的模块同名,如xx模块xx.ini,xxxx模块xxxx.ini

6、如果用到配置数据,将配置数据单独写到一个单例类中

7、给你的单例加上destroy函数,以便在不用的时候可以干掉它

           方法:

声明:

public:
	static void destroy();
实现:

void XXXConfig::destroy()
{
	if (NULL != pInstance)
	{
		delete pInstance;
		pInstance = NULL;
	}
}
调用:
XXXConfig::destroy();
8、同类型的控件考虑让他们大小一致,对齐,调整控件的tab顺序(从用户的角度考虑)

9、浏览获取文件名

	CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, NULL);
	if (IDOK == dlg.DoModal())
	{
		XXX = dlg.GetPathName();

	}
10、浏览获取文件夹名

	CString ReturnPath;
	CHAR szPath[_MAX_PATH];
	BROWSEINFO bi;
	bi.hwndOwner = NULL;
	bi.pidlRoot = NULL;
	bi.lpszTitle = _T("请选择文件夹");
	bi.pszDisplayName = szPath;
	bi.ulFlags = BIF_RETURNONLYFSDIRS;
	bi.lpfn = NULL;
	bi.lParam = NULL;
	LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);
	if (pItemIDList)
	{
	   if(SHGetPathFromIDList(pItemIDList,szPath))
	   {
			ReturnPath = szPath; 
			XXX= ReturnPath;
			
	   }
	}	




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值