- 浏览: 1999046 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
void CExDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFtpDialog)
DDX_Control(pDX, IDC_NAME, m_name);
DDX_Text(pDX, IDC_AGE, m_nAge);
DDV_MinMaxInt(pDX, m_nAge, 1, 100);
//}}AFX_DATA_MAP
}
class CDataExchange
{
// Attributes
public:
BOOL m_bSaveAndValidate; // TRUE 则 保存和验证数据
CWnd* m_pDlgWnd; // 指向一个对话框
// Operations (for implementors of DDX and DDV procs)
HWND PrepareCtrl(int nIDC); //返回指定ID的控制窗口的句柄
HWND PrepareEditCtrl(int nIDC); //返回指定ID的编辑控制窗口句柄
…
// Implementation
CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);
…
};
CDataExchange::CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate)
{
ASSERT_VALID(pDlgWnd);
m_bSaveAndValidate = bSaveAndValidate;
m_pDlgWnd = pDlgWnd;
m_hWndLastControl = NULL;
}
BOOL CWnd::UpdateData(BOOL bSaveAndValidate)
{
ASSERT(::IsWindow(m_hWnd)); // calling UpdateData before DoModal?
//创建CDataChange对象
CDataExchange dx(this, bSaveAndValidate);
…
BOOL bOK = FALSE; // assume failure
TRY
{
//数据交换
DoDataExchange(&dx);
bOK = TRUE; // it worked
}
CATCH(CUserException, e)//例外
{
…
}
END_CATCH_ALL
//恢复原来的值
…
return bOK;
}
UpdataDate根据参数创建CDataExchange对象dx,如果参数为TRUE,dx用来写数据,否则dx用来读数据;然后调用DoDataExchange进行数据交换。
static void AFX_CDECL DDX_TextWithFormat(CDataExchange* pDX,
int nIDC,LPCTSTR lpszFormat, UINT nIDPrompt, ...)
{
va_list pData; //用来处理个数可以变化的参数
va_start(pData, nIDPrompt);//得到参数
//得到编辑框的句柄
HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
TCHAR szT[32];
if (pDX->m_bSaveAndValidate) //TRUE,从编辑框读出数据
{
// the following works for %d, %u, %ld, %lu
//从编辑框得到内容
::GetWindowText(hWndCtrl, szT, _countof(szT));
//转换编辑框内容为指定的格式,支持“ %d, %u, %ld, %lu”
if (!AfxSimpleScanf(szT, lpszFormat, pData))
{
AfxMessageBox(nIDPrompt);
pDX->Fail(); //数据交换失败
}
}
else //FALSE,写入数据到编辑框
{
//把要写的内容转换成指定格式
wvsprintf(szT, lpszFormat, pData);//不支持浮点运算
//设置编辑框的内容
AfxSetWindowText(hWndCtrl, szT);
}
va_end(pData);//结束参数分析
}
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, long& value)
{
if (pDX->m_bSaveAndValidate)
DDX_TextWithFormat(pDX, nIDC, _T("%ld"), AFX_IDP_PARSE_INT, &value);
else
DDX_TextWithFormat(pDX, nIDC, _T("%ld"), AFX_IDP_PARSE_INT, value);
}
void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl)
{
if (rControl.m_hWnd == NULL) // 还没有子类化
{
ASSERT(!pDX->m_bSaveAndValidate);
//得到控制窗口句柄
HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
//把hWndCtrl窗口和MFC窗口对象rControl捆绑在一起
if (!rControl.SubclassWindow(hWndCtrl))
{
ASSERT(FALSE); //不允许两次子类化
AfxThrowNotSupportedException();
}
#ifndef _AFX_NO_OCC_SUPPORT//OLE控制相关的操作
else
{
// If the control has reparented itself (e.g., invisible control),
// make sure that the CWnd gets properly wired to its control site.
if (pDX->m_pDlgWnd->m_hWnd != ::GetParent(rControl.m_hWnd))
rControl.AttachControlSite(pDX->m_pDlgWnd);
}
#endif //!_AFX_NO_OCC_SUPPORT
}
}
发表评论
-
__declspec(novtable) 的用法
2010-11-27 14:37 1529__declspec(novtable) 的用法 __d ... -
解决URLDownloadToFile缓存问题的两种方法
2010-09-09 15:18 2818解决URLDownloadToFile缓存问题的两种方法 ... -
修改richedit背景
2010-07-19 22:52 1599RichEditCtrl::SetBackgroundCo ... -
使用ADO封装类的数据库程序开发实例(下)
2010-07-12 15:30 1428使用ADO封装类的数据库 ... -
使用ADO封装类的数据库程序开发实例(上)
2010-07-12 15:28 1169使用ADO封装类的数据库 ... -
VC防止窗口和控件闪烁的方法
2010-07-09 21:16 19661、将Invalidate()替换为Invalidate ... -
防止窗口闪烁地办法
2010-07-09 21:13 1465防止窗口闪烁地办法 也许我们都碰到过这种情况,当你 ... -
使用ADO _ConnectionPtr
2010-07-06 16:04 5220// GetUser.cpp : Defines the ... -
VC用ADO访问数据库全攻略
2010-07-06 15:29 1762VC用ADO访问数据库全 ... -
深入GetMessage和PeekMessage (引自-MSDN技术组)
2010-06-10 16:59 3673深入GetMessage和PeekMessage (引自 ... -
界面编程总结(1)
2010-06-02 13:32 3960原文地址:http://blog.csdn.net/byx ... -
获取信息的有关Windows API
2010-05-27 10:01 3086获取信息的有关Windows API 1.窗口信息 ... -
VC中如何实现窗口的隐藏
2010-05-13 10:08 7793VC中如何实现窗口的隐藏 用MFC做的Dialog ... -
SetConsoleCtrlHandler 处理控制台消息
2010-05-07 17:32 17991SetConsoleCtrlHandler 处理控制台消 ... -
解决决错误: error C2850: 'PCH header file'
2010-04-27 19:45 1887解决决错误: error C2850: 'PCH hea ... -
VC++ GDI+编程的字体和文本绘制
2010-04-13 13:12 7902字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸 ... -
VC利用GDI+显示透明的PNG图片
2010-04-12 16:59 114711.在你将要使用GDI+的工程中,完成初始化 ... -
GDI+编程基础(一)GDI+ Vs GDI
2010-04-12 15:59 2298下载源代码一、GDI GDI是位于应用程序与不同硬件之间 ... -
VC画图
2010-04-12 15:50 1489BOOL DrawPic(HDC hdc, TCHAR* ... -
MFC中获取命令行参数的几种方法
2010-04-08 18:09 2929在MFC程序中,可以用以下几种方法来获取命令行参数。为方便 ...
相关推荐
MFC 文件对话框-打开文件-保存文件 MFC 文件对话框-打开文件-保存文件 MFC 文件对话框-打开文件-保存文件MFC 文件对话框-打开文件-保存文件MFC 文件对话框-打开文件-保存文件 MFC 文件对话框-打开文件-保存文件MFC ...
深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷深入浅出MFC--侯捷
旋转按钮的实例 博文链接:https://fpwjp.iteye.com/blog/390451
MFC深入浅出doc版本MFC深入浅出doc版本MFC深入浅出doc版本MFC深入浅出doc版本MFC深入浅出doc版本
MFC 字体对话框完整工程演示代码下载 MFC_Font_Example MFC 字体对话框完整工程演示代码下载 MFC_Font_Example MFC 字体对话框完整工程演示代码下载 MFC_Font_Example MFC 字体对话框完整工程演示代码下载 MFC_...
MFC 颜色对话框 完整工程演示代码下载 MFC_Color_Example MFC 颜色对话框 完整工程演示代码下载 MFC_Color_Example MFC 颜色对话框 完整工程演示代码下载 MFC_Color_Example MFC 颜色对话框 完整工程演示代码...
本书的中心就是深入浅出地解析MFC类库,分析怎么使用MFC类库以及MFC类库的内部实现,揭开MFC复杂、深奥的面纱,让读者对MFC有一个全面、透彻、清晰的理解。关于MFC的核心实现,主要有以下几个方面。 首先,MFC采用...
MFC深入浅出 --一个关于mfc使用的入门级教程
|------ 5.5 在对话框中进行数据交换和数据检查 2 |------ 5.6 使用属性对话框 |------ 5.7 使用通用对话框 |------ 5.8 建立以对话框为基础的应用 |------ 5.9 使用对话框作为子窗口 +-- 第六章 网络通信...
|------ 5.5 在对话框中进行数据交换和数据检查 |------ 5.6 使用属性对话框 |------ 5.7 使用通用对话框 |------ 5.8 建立以对话框为基础的应用 |------ 5.9 使用对话框作为子窗口 +-- 第六章 网络通信开发
MFC深入浅出 MFC深入浅出 MFC深入浅出 MFC深入浅出 MFC深入浅出
- 第五章 对话框|------ 5.1 使用资源编辑器编辑对话框|------ 5.2 创建有模式对话框|------ 5.3 创建无模式对话框|------ 5.4 在对话框中进行消息映射|------ 5.5 在对话框中进行数据交换和数据检查|------ 5.6 ...
MFC,深入浅出,大家都懂的,讲得挺好的,对初学者很有帮助,对编程高手也是一很好的参考书
无边框标题栏的对话框重绘--音乐播放器界面制作; 本代码讲解过程请进http://www.gymsaga.com/project/339.html; 近期本博每天继续更新MFC实例讲解教程,欢饮你的光临; 博客主页http://www.gymsaga.com/; MFC实例讲解...
深入浅出MFC 深入浅出MFC深入浅出MFC深入浅出MFC 深入浅出MFC 深入浅出MFC 深入浅出MFC 深入浅出MFC 深入浅出MFC
|------ 5.5 在对话框中进行数据交换和数据检查 |------ 5.6 使用属性对话框 |------ 5.7 使用通用对话框 |------ 5.8 建立以对话框为基础的应用 |------ 5.9 使用对话框作为子窗口 +-- 第六章 网络通信开发 |------...
《深入浅出MFC》分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Windows程序的基本观念以及C++的高阶议题。
个人仔细研究过侯杰的《深入浅出MFC》,也看了李久进先生的《MFC深入浅出》,觉得后者更简洁明了,也更加具体,我十分推荐使用后者。所以我将CHM版本的《MFC深入浅出》手工转换成了Word版,希望大家喜欢。MFC 深入浅...