- 浏览: 2031312 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1578__declspec(novtable) 的用法 __d ... -
解决URLDownloadToFile缓存问题的两种方法
2010-09-09 15:18 2906解决URLDownloadToFile缓存问题的两种方法 ... -
修改richedit背景
2010-07-19 22:52 1647RichEditCtrl::SetBackgroundCo ... -
使用ADO封装类的数据库程序开发实例(下)
2010-07-12 15:30 1474使用ADO封装类的数据库 ... -
使用ADO封装类的数据库程序开发实例(上)
2010-07-12 15:28 1215使用ADO封装类的数据库 ... -
VC防止窗口和控件闪烁的方法
2010-07-09 21:16 20221、将Invalidate()替换为Invalidate ... -
防止窗口闪烁地办法
2010-07-09 21:13 1512防止窗口闪烁地办法 也许我们都碰到过这种情况,当你 ... -
使用ADO _ConnectionPtr
2010-07-06 16:04 5265// GetUser.cpp : Defines the ... -
VC用ADO访问数据库全攻略
2010-07-06 15:29 1799VC用ADO访问数据库全 ... -
深入GetMessage和PeekMessage (引自-MSDN技术组)
2010-06-10 16:59 3726深入GetMessage和PeekMessage (引自 ... -
界面编程总结(1)
2010-06-02 13:32 4011原文地址:http://blog.csdn.net/byx ... -
获取信息的有关Windows API
2010-05-27 10:01 3146获取信息的有关Windows API 1.窗口信息 ... -
VC中如何实现窗口的隐藏
2010-05-13 10:08 7862VC中如何实现窗口的隐藏 用MFC做的Dialog ... -
SetConsoleCtrlHandler 处理控制台消息
2010-05-07 17:32 18142SetConsoleCtrlHandler 处理控制台消 ... -
解决决错误: error C2850: 'PCH header file'
2010-04-27 19:45 1953解决决错误: error C2850: 'PCH hea ... -
VC++ GDI+编程的字体和文本绘制
2010-04-13 13:12 7979字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸 ... -
VC利用GDI+显示透明的PNG图片
2010-04-12 16:59 115391.在你将要使用GDI+的工程中,完成初始化 ... -
GDI+编程基础(一)GDI+ Vs GDI
2010-04-12 15:59 2336下载源代码一、GDI GDI是位于应用程序与不同硬件之间 ... -
VC画图
2010-04-12 15:50 1539BOOL DrawPic(HDC hdc, TCHAR* ... -
MFC中获取命令行参数的几种方法
2010-04-08 18:09 2970在MFC程序中,可以用以下几种方法来获取命令行参数。为方便 ...
相关推荐
深入浅出MFC(第二版) 目录 第0章 你一定要知道(导读) 这本书适合谁 你需要什么技术基础 你需要什么软硬件环境 让我们使用同一种语言 本书符号习惯 本书例程的取得 范例程序说明 与前版本之差异 如何联络作者 第...
《MFC深入浅出》是一本专为初学者设计的MFC编程教程,它深入浅出地介绍了Microsoft Foundation Classes(MFC)库的使用方法,是学习Windows应用程序开发的宝贵资源。MFC是微软提供的一套面向对象的C++类库,它封装了...
《MFC深入浅出》是李久进先生撰写的一本关于Microsoft Foundation Classes (MFC)的权威指南。这本书全面而深入地介绍了MFC这一强大的Windows应用程序开发框架,旨在帮助开发者更好地理解和运用MFC进行C++应用开发。...
### 深入浅出MFC 2e 关键知识点概览 #### 书籍简介 《深入浅出MFC 2e》是一本详细介绍Microsoft Foundation Classes(MFC)的著作,作者侯俊杰(侯捷),针对MFC的理论与实践进行了深入浅出的讲解。该书覆盖了从...
《MFC深入浅出》是一本专为程序员设计的书籍,旨在帮助读者全面理解并熟练掌握Microsoft Foundation Classes(MFC)这一强大的Windows应用程序开发框架。MFC是微软为C++开发者提供的一个类库,它封装了Windows API,...
《MFC深入浅出》是一本专注于Microsoft Foundation Classes (MFC) 库的教程,它为Windows应用程序开发提供了深入的理解和实践指导。MFC是微软为C++开发者提供的一套类库,它封装了Windows API,使得开发人员可以更加...
《深入浅出MFC》是一本专为初学者设计的MFC(Microsoft Foundation Classes)学习指南,这本书结合了理论与实践,旨在帮助读者快速理解和掌握MFC这一强大的Windows应用程序开发框架。MFC是微软公司提供的一个C++类库...
通过学习《深入浅出MFC》,读者可以了解如何利用MFC来创建窗口、对话框、控件、文档/视图架构,以及处理消息映射等关键概念。 首先,本书会介绍MFC的基本结构和设计原则,包括类库的组织方式、应用程序工作流、以及...
《MFC深入浅出》是李进久撰写的一本关于Microsoft Foundation Classes (MFC)的专著,旨在帮助读者深入理解和应用这一强大的Windows应用程序开发框架。MFC是Microsoft为C++开发者提供的一种类库,它封装了Windows API...
《深入浅出MFC》是著名C++专家侯捷老师撰写的一本关于Microsoft Foundation Classes (MFC) 的经典著作。MFC是微软公司提供的一种C++类库,它封装了Windows API,使得开发者能用面向对象的方式来开发Windows应用程序...
《深入浅出MFC》是侯俊杰先生撰写的一本关于Microsoft Foundation Classes (MFC)的经典教程,尤其在第二版中,作者对MFC进行了更深入、细致的讲解,旨在帮助读者更好地理解和应用这一强大的Windows应用程序开发框架...
《深入浅出MFC》是侯俊杰先生的经典著作,专为想要深入理解Microsoft Foundation Classes (MFC) 库的开发者而写。MFC是微软为Windows应用程序开发提供的一套C++类库,它封装了Windows API,使得开发者能够用面向对象...
《深入浅出MFC》是一本深受IT从业者喜爱的书籍,尤其对于那些专注于Windows平台开发的程序员来说,它是学习Microsoft Foundation Classes(MFC)的重要参考资料。MFC是微软提供的一套C++类库,用于简化Windows API...
《深入浅出MFC》是台湾著名技术作家侯捷先生的一部经典著作,该书深入解析了Microsoft Foundation Classes (MFC) 框架,帮助读者理解并掌握Windows应用程序开发的核心技术。MFC是微软提供的一个C++类库,它封装了...
《MFC深入浅出》是侯俊杰先生撰写的一本关于Microsoft Foundation Classes (MFC) 的经典教程。MFC 是微软提供的一种C++类库,它封装了Windows API,使得开发者能够更容易地创建Windows应用程序。这本书的核心在于...
《深入浅出MFC》是侯俊杰先生撰写的一本关于Microsoft Foundation Classes (MFC)的经典教程,尤其适合初学者和有一定基础的开发者。MFC是微软为Windows平台开发应用程序提供的一套C++类库,它封装了Windows API,...
《深入浅出MFC》是一本专注于Microsoft Foundation Classes (MFC) 库的权威书籍,MFC 是微软为Windows应用程序开发提供的一套类库,基于C++构建,它极大地简化了Windows API的使用。该书的配套光盘包含了丰富的学习...
《深入浅出MFC》是面向C++程序员的一本经典著作,主要讲解了Microsoft Foundation Classes (MFC) 库的使用,它是一个由微软提供的C++类库,用于简化Windows应用程序开发。MFC将Windows API封装成易于使用的C++类,...
《深入浅出MFC简体中文版原始光盘(附源码)》是一部关于Microsoft Foundation Classes (MFC) 的经典教程,旨在帮助开发者全面理解并掌握MFC这一强大的Windows应用程序开发框架。MFC是Microsoft为C++程序员设计的一个...
《深入浅出MFC编程实例》是一本专为已经对MFC有初步了解的开发者设计的书籍,旨在通过丰富的实践案例来深入理解MFC(Microsoft Foundation Classes)框架的使用。MFC是微软提供的一个C++类库,它封装了Windows API,...