MFC常见问题总结
1. c++中的函数前面加个LRESULT是什么意思啊?
在微软vc提供的头文件中有定义
在winnt.h中typedef long LONG;
在windef.h中typedef LONG LRESULT;
所以LRESULT就是long,也就是长整形
之所以取名类LRESULT,L=>long
result表示结果,说明这个函数的返回值是某个结果
仅此而已。
2.
MFC中DoDataExchange()的作用
void CDlgSelectCS::DoDataExchange(CDataExchange* pDX)
{
? ?
CDialog::DoDataExchange(pDX);
?
? DDX_Text(pDX, IDC_EDIT_SCR, m_ScrCS_Name);
? ?
DDX_Text(pDX, IDC_EDIT_DEST, m_DestCS_Name);
}
3.
函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小
当s等于t时返回0,当s>t时返回正值,当s<t时返回负值
enum { IDD = IDD_ABOUTBOX }
枚举对话框的资源id
CAboutDlg::DoDataExchange(CDataExchange* pDX)
绑定变量名和控件名字
AfxGetApp()
得到整个程序的指针并加载icon
easysize:保持控件大小随对话框大小改变。
4. easysize使用方法
1.首先将EasySize.h拷贝到工程文件夹中,然后在stdafx.h中包含该头文件:
#include "EasySize.h"
2.在对话框类声明中添加DECLARE_EASYSIZE宏:
class CEasySizeDemoDlg : public CDialog
{
DECLARE_EASYSIZE
...
3.在OnInitDialog()函数中添加INIT_EASYSIZE宏(注意有分号):
BOOL CEasySizeDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
INIT_EASYSIZE;
return TRUE; // return TRUE unless you set the focus to a control
}
4.响应WM_SIZE消息,在响应函数中添加UPDATE_EASYSIZE宏(注意有分号):
void CEasySizeDemoDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
UPDATE_EASYSIZE;
}
5.如果需要限制对话框有一个最小尺寸,首先在资源视图中为对话框添加上最大化最小化按钮,然后Class Wizard中选择Class Info标签,在Message fileter下拉列表中选择Window,然后再点击Message Maps标签,就出现WM_SIZING消息了,添加该消息的响应函数:
void CEasySizeDemoDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
CDialog::OnSizing(fwSide, pRect);
EASYSIZE_MINSIZE(280,250,fwSide,pRect);
}
这样就把对话框的最小尺寸限制在(280, 250)上了
6.添加控件布局映射,放到消息映射之后,基本格式如下:
BEGIN_EASYSIZE_MAP(class_name)
...
EASYSIZE(control,left,top,right,bottom,options)
...
END_EASYSIZE_MAP
class_name就是对话框类的类名
control是要设置的控件的ID
left、top、right、bottom分别指的是该控件左、上、右、下方的控件的ID,也可以为以下特殊值:
ES_BORDER:保持与边框距离不变
ES_KEEPSIZE:保持大小不变
所放位置:
left -- 表示和right指定的控件右对齐
right -- 表示和left指定的控件左对齐
top -- 表示和bottom指定的控件上对齐
bottom -- 表示和top指定的控件下对齐
options可指定为0,也可指定为以下值:
ES_HCENTER:保持宽度不变,水平位置在left和right指定的控件正中间
ES_VCENTER:保持高度不变,垂直位置在left和right指定的控件正中间
MFC常见问题总结的更多相关文章
- MFC常见问题解惑
MFC类的分类 1 Root: CObject : CObject2 Application Architecture Classes: CWinApp/CFrameWnd/... 3 Window, ...
- MFC常见问题以及解决方法(2)_Cstring和string互相转换
MFC默认编码是unicode(自己改成多字符集是不行的),对话框中对字符串的处理都是宽字符,而且添加变量会默认是CString类型,当你代码中想用string但又遇到必须转为CString的情况,就 ...
- MFC常见问题以及解决方法(1)_MFC下文本编辑框按下回车后窗口退出
这里主要介绍遇到这种方法的解决方案,解决方法可能有多种,但这里只给出有效的一种,这里不会详细说明出现问题的原因以及为什么这样解决,想了解更多可以百度,写这个主要是防止以后忘记,做个简单的笔记. 问题: ...
- MFC 常见问题
一 常见变量获得 CDC * cDc=GetDC(); HDC m_Screenhdc = this->GetDC()->m_hDC; // 整个窗口客户区的坐标 this->Ge ...
- VC++学习之VC中常见问题
VC++学习之VC中常见问题 (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 ( ...
- MFC控件CTabCtrl关联变量
1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,将该控件绑定一个变量 用两种方法: 1 ) 自己定义成员变量 CTabCtr ...
- 【MFC】MFC绘图不闪烁——双缓冲技术
MFC绘图不闪烁——双缓冲技术[转] 2010-04-30 09:33:33| 分类: VC|举报|字号 订阅 [转自:http://blog.163.com/yuanlong_zheng@126/ ...
- 非MFC工程中使用MFC库
目录(?)[-] 需求说明 常见问题 问题分析 参考解决方法 我的解决方案 Stdafxh的原理 需求说明 C++工程的类型有很多,从VS(或VC)可以看到常见的有:Win32 Console A ...
- MFC中的双缓冲技术(解决绘图闪烁问题)
转自 MFC绘图不闪烁——双缓冲技术[转] 在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃. 所谓双缓冲技术,下面是百度百科的 ...
随机推荐
- git命令行获取某分支代码
参考https://www.cnblogs.com/nylcy/p/6569284.html git clone -b branch1 http://xxx.xx.xxx... git clone - ...
- Myeclipse加载php插件
下载PHPEclipse-1.2.3.200910091456PRD-bin.zip 解压缩后.发现内容包含:两个目录features和plugins,一个xml文件site.xml 全部扔进myec ...
- Maven解决NoPluginFoundForPrefixException错误
Maven解决NoPluginFoundForPrefixException错误方法 错误出现的原因 你指的是一个不存在的插件,如由于错误的前缀. 您使用的是第三方的Maven插件没有部署到中央Mav ...
- SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束
一直在关注软件设计方面,数据库方面就忽略了很多,最近在设计数据库时遇到了一些小麻烦,主要是数据库中约束和性能调优方面的应用,以前在学习 Sql Server 2000,还有后来的 Sql Server ...
- 自定义圆形ImageView(解决Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();报错问题)
package com.bottle.bottlelilibrary.view; import android.content.Context; import android.graphics.Bit ...
- 通过maven-assembly-plugin将Springboot项目打包成tar.gz压缩包,在Linux环境可执行脚本直接安装成系统服务
1.在pom.xml中添加maven-assembly-plugin依赖,同时需将默认生成的spring-boot-maven-plugin依赖删除,否则最终打出的发行包启动会有问题 <plug ...
- APP支付(.NET版)
---恢复内容开始--- APP支付(.NET版) 一. 支付宝支付 1. 有一个支付账号,在蚂蚁金服开放平台中登录账号→选择“管理中心”→在“开发者中心”下选择“网页&移动应用”→然后按 ...
- 设计模式学习心得<代理模式 Proxy>
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式. 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 概述 意图 为其他对象提供 ...
- 腾讯开源项目phxpaxos的编译步骤
#paxos的一般编译流程在项目文档<中文详细编译手册>里面已经有介绍,这里重点介绍一下编译samples目录下的代码: #我的环境是ubuntu; #设置paxos根目录 phx_dir ...
- 合适IT人的健身技巧
合适IT人的健身技巧: 健身益寿生活十条 虽然遗传学家说人的平均寿命可长达120岁,但本世纪人的寿命远远达不到这个数字^有鉴于此,国外一批医生.心理学家和营养学家制定了健身益寿生活10条准则,认为如能 ...