能给我讲讲DoDataExchange(CDataExchange* pDX)函数的用途和用法啊?

bullcat 2003-08-19 11:20:05
想学学DoDataExchange(CDataExchange* pDX)函数的用途和用法
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
思危 2003-08-19
  • 打赏
  • 举报
回复
用于对话框中控件和数据成员交换数据用的。
xtmzl 2003-08-19
  • 打赏
  • 举报
回复
用于 windows控件对象 与 C++对象 之间的数据交换。
fanfyj 2003-08-19
  • 打赏
  • 举报
回复
看MSDN

void CPenWidthsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPenWidthsDlg)

DDX_Text(pDX, IDC_THIN_PEN_WIDTH, m_nThinWidth);

DDV_MinMaxInt(pDX, m_nThinWidth, 1, 20);

DDX_Text(pDX, IDC_THICK_PEN_WIDTH, m_nThickWidth);

DDV_MinMaxInt(pDX, m_nThickWidth, 1, 20);
//}}AFX_DATA_MAP
}

u2m 2003-08-19
  • 打赏
  • 举报
回复
数据控制用的
这是一个用C言编写的聊天程序,很好使哦 #include "stdafx.h" #include "chat.h" #include "chatDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CChatDlg dialog CChatDlg::CChatDlg(CWnd* pParent /*=NULL*/) : CDialog(CChatDlg::IDD, pParent) { //{{AFX_DATA_INIT(CChatDlg) m_strMessage = _T(""); m_strName = _T(""); m_port =5000; m_strShowMessage = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CChatDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CChatDlg) DDX_Text(pDX, IDC_MESSAGE, m_strMessage); DDX_Text(pDX, IDC_NAME, m_strName); DDX_Text(pDX, IDC_PORT, m_port); DDX_Text(pDX, IDC_SHOWMESSAGE, m_strShowMessage); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CChatDlg, CDialog) //{{AFX_MSG_MAP(CChatDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_CONNECT, OnConnect) ON_BN_CLICKED(IDC_SETSERVER, OnSetserver) ON_BN_CLICKED(IDC_SEND, OnSend) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CChatDlg message handlers BOOL CChatDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here //自行添加的程序代码,目的是在初始化对话框的时候就自动显示出本地的ip地址 if(AfxSocketInit(NULL)==0) { AfxMessageBox("CSocket 初始化失败!"); } BYTE f0,f1,f2,f3; CString name; CClientSocket::GetLocalHostName(name); CClientSocket::GetIpAddress(name,f0,f1,f2,f3); ((CIPAddressCtrl *)(GetDlgItem(IDC_IPADDRESS)))->SetAddress(f0,f1,f2,f3); m_bInit=false; m_bClient=false; return TRUE; // return TRUE unless you set the focus to a control } void CChatDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CChatDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(▭); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CChatDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } //连接服务器的消息相应函数
vc++利用ADOX创建数据库 // ADOXCreateDatabaseDlg.cpp : implementation file // #include "stdafx.h" #include "ADOXCreateDatabase.h" #include "ADOXCreateDatabaseDlg.h" #include "Shlwapi.h" #pragma comment(lib,"shlwapi.lib") // Download by http://www.codefans.net #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CADOXCreateDatabaseDlg dialog CADOXCreateDatabaseDlg::CADOXCreateDatabaseDlg(CWnd* pParent /*=NULL*/) : CDialog(CADOXCreateDatabaseDlg::IDD, pParent) { //{{AFX_DATA_INIT(CADOXCreateDatabaseDlg) m_dbName = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CADOXCreateDatabaseDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CADOXCreateDatabaseDlg) DDX_Text(pDX, IDC_DBNAME, m_dbName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CADOXCreateDatabaseDlg, CDialog) //{{AFX_MSG_MAP(CADOXCreateDatabaseDlg) ON_WM_SYSCOMM
词法分析// TranslationDlg.cpp : 实现文件 // #include "stdafx.h" #include "Translation.h" #include "TranslationDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialog { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CTranslationDlg 对话框 CTranslationDlg::CTranslationDlg(CWnd* pParent /*=NULL*/) : CDialog(CTranslationDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CTranslationDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT2, content); DDX_Control(pDX, IDC_EDIT1, result); } BEGIN_MESSAGE_MAP(CTranslationDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, &CTranslationDlg::OnBnClickedButton1) END_MESSAGE_MAP() // CTranslationDlg 消息处理程序 BOOL CTranslationDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 CAboutDlg dlgAbout; dlgAbout.DoModal(); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CTranslationDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CTranslationDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CTranslationDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CTranslationDlg::SplideFrontSpc (CString &str) { int i = 0; for(i;str[i]==' ';) {str.Delete (0);}//MessageBox (_T("ok")); } void CTranslationDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CString code ,temp ,output; //CString word[8] = ; CString flag[3][10] = {{_T("if"),_T("int"),_T("for"),_T("while"),_T("do"),_T("return"),_T("break"),_T("continue")}, {_T("+"),_T("-"),_T("*"),_T("/"),_T("="),_T(">"),_T("<"),_T("<="),_T(">="),_T("!=")}, { _T(","),_T(";"),_T("{"),_T("}"),_T("("),_T(")")}}; content.GetWindowTextW (code); code.Replace (_T("\r\n"),_T("")); code.Append (_T(" ")); while(!code.IsEmpty ()) { temp.Empty (); int i,j; int isfind = 0;//是否找到,找到了代表其类型 SplideFrontSpc(code); //temp = code.Left (code.Find (_T(","))); //code.Delete (0,2);//temp = code[0]; //截取下一个单词 temp = code.Left (code.Find (_T(" "))); code.Delete (0,code.Find (_T(" "))); //对比单词类型 for(i=0;!isfind&&i<3;i++) for(j=0;j<10;j++) if(temp == flag[i][j]) { if(i==0) isfind = 1; else if(i==1) isfind = 4; else isfind = 5; break; } if(isfind==0) { int isnum = temp[0]-'0'; if(isnum>-1||isnum<10) isfind = 3; else isfind = 2; } CString cnum; cnum.Format (_T("%d"),isfind); if(!temp.IsEmpty ()) temp = _T("(") + cnum + _T(", \"") + temp + _T("\")"); else temp = _T("词法分析完毕!\r\n"); output = output + temp + _T("\r\n"); } //output = _T("asdjfk\r\naksdjfl\nasldkfj\n"); result.SetWindowTextW (output); } BOOL CTranslationDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 return CDialog::PreTranslateMessage(pMsg); } void CTranslationDlg::OnOK() { // TODO: 在此添加专用代码和/或调用基类 CDialog::OnOK(); }
支持wce下实现ping指令 // PingExampleDlg.cpp : implementation file // #include "stdafx.h" #include "PingExample.h" #include "PingExampleDlg.h" #include #include #include Export.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPingExampleDlg dialog CPingExampleDlg::CPingExampleDlg(CWnd* pParent /*=NULL*/) : CDialog(CPingExampleDlg::IDD, pParent) { //{{AFX_DATA_INIT(CPingExampleDlg) m_ipAddr = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CPingExampleDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPingExampleDlg) DDX_Control(pDX, IDC_LIST_RECV, m_lstRecv); DDX_Text(pDX, IDC_EDIT_IP, m_ipAddr); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPingExampleDlg, CDialog) //{{AFX_MSG_MAP(CPingExampleDlg) ON_BN_CLICKED(IDC_BTNCLEAR, OnBtnclear) ON_BN_CLICKED(IDC_BTNPING, OnBtnping) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPingExampleDlg message handlers BOOL CPingExampleDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CenterWindow(GetDesktopWindow()); // center to the hpc screen // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } /* *函数介绍:CE下Ping方法 *入口参数:cIPAddr : IP地址 pWnd : CWnd对象,用于指定窗体对象 *出口参数:pListBox : CListBox对象,用于显示Ping信息 *返回值:(无) */ void CEPing(CString cIPAddr,CListBox * pListBox,CWnd * pWnd) { WSAData wsaData; //初始化Socket动态链接库 if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) { return ; } /*将IP地址转换成单字节*/ char szDestIPAddr[255]; ZeroMemory(szDestIPAddr,255); WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK ,cIPAddr.GetBuffer(cIPAddr.GetLength()),cIPAddr.GetLength() ,szDestIPAddr,cIPAddr.GetLength(),NULL,NULL); IPAddr ipAddr; //将目标字符串IP地址转换成IPAddr结构 ipAddr = inet_addr(szDestIPAddr); if (ipAddr == INADDR_NONE) { AfxMessageBox(_T("地址无效")); return ; } // 打开ping服务 HANDLE hIP = IcmpCreateFile(); if (hIP == INVALID_HANDLE_VALUE) { AfxMessageBox(_T("不能打开Ping服务")); return ; } // 构造ping数据包 char acPingBuffer[64]; memset(acPingBuffer, '*', sizeof(acPingBuffer)); PICMP_ECHO_REPLY pIpe = (PICMP_ECHO_REPLY)GlobalAlloc( GMEM_FIXED | GMEM_ZEROINIT, sizeof(ICMP_ECHO_REPLY) + sizeof(acPingBuffer)); if (pIpe == 0) { AfxMessageBox(_T("分配ping包缓冲区失败")); return ; } CString m_recv; // 发送ping数据包 m_recv = "ping "+cIPAddr+" with 64 Bytes"; pListBox->AddString(m_recv); for (int i=0;i<4;i++) { //发送ping服务包,等待接收时间为1秒 DWORD dwStatus = IcmpSendEcho(hIP,ipAddr, acPingBuffer, sizeof(acPingBuffer), NULL, pIpe, sizeof(ICMP_ECHO_REPLY) + sizeof(acPingBuffer), 1000); //当dwStatus不等于0,代表接收到回应 if (dwStatus != 0) { m_recv.Format(_T("Reply From %d.%d.%d.%d :bytes=%d time=%d TTL") ,int(LOBYTE(LOWORD(pIpe->Address))) ,int(HIBYTE(LOWORD(pIpe->Address))) ,int(LOBYTE(HIWORD(pIpe->Address))) ,int(HIBYTE(HIWORD(pIpe->Address))) ,int(pIpe->DataSize) ,int(pIpe->RoundTripTime) ,int(pIpe->Options.Ttl)); pListBox->AddString(m_recv); Sleep(500); } else { pListBox->AddString(_T("Error obtaining info from ping packet.")); } pWnd->UpdateWindow(); } //释放已分配的内存 GlobalFree(pIpe); //关闭Ping服务 IcmpCloseHandle(hIP); //释放Socket资源 WSACleanup(); } void CPingExampleDlg::OnBtnclear() { int nCount = m_lstRecv.GetCount(); for (int i=0;i < nCount;i++) { m_lstRecv.DeleteString(0); } } void CPingExampleDlg::OnBtnping() { UpdateData(TRUE); CEPing(m_ipAddr,&m_lstRecv,this); UpdateWindow(); }
C++学籍管理系统课程设计报告(含代码) LT 3.5修改密码功能及代码设计…………………………………………30 3.6删除功能及代码设计………………………………………………34 3.7修改功能及代码设计………………………………………………36 第四章 界面设计与实现----------------------------------------(37) 4.1 学生信息管理系统…………………………………………………37 4.2 学生资料设置………………………………………………………37 4.3 成绩设置……………………………………………………………38 4.4 学生资料显示………………………………………………………38 4.5 成绩显示……………………………………………………………39 4.6 修改密码……………………………………………………………39 总结---------------------------------------------------------(40) 工作安排-----------------------------------------------------(43) 参考文献-----------------------------------------------------(44) 第一章 绪论 1. 课程设计背景 经过一个学期对《C++程序设计》的学习,学习到了基本的理论知识,了解到了C++语 言程序设计的思想,现在把这些知识运用到实际中来。学籍管理信息系统是高校管理的 重要组成部分,它能够为用户提供充足的信息和快捷的查询手段。使用计算机对学生资 料、成绩信息进行管理,能够极大的提高学生管理的效率,节约教育经费,这也是适应 学校信息化建设发展趋势的重要因素。因此我们有必要开发学籍管理信息系统。 2. 课程设计目的 全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法。正确理解掌握C ++面向对象程序设计的基本特性:类、对象、继承与派生、多态、虚函数、模板、流类 库等。遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,并相应给出 软件规格说明书等制品。了解当前常用的软件开发工具(Visual C++),要求熟练掌握基于MFC的程序设计,培养解决实际问题的能力。 1.3 课程设计思路 实现学生基本情况的录入、修改、删除等基本操作;能实现学生成绩的录入、修改、 删除等基本操作;能方便的对学生的各个学期成绩进行统计;能具有成绩统计、排名等 功能;可行性分析由于本系统管理的对象单一,都是在校学生,且每个数据内容具有较强 的关联性,涉及的计算过程不是很复杂。 第二章 系统总体规划 2.1 前期准备 学习C++6.0课本理论知识,查找、搜集相关资料,讨论出具体思路、方法,在整个过 程中周老师给了我们必不可少的许多指导,使我们能够顺利地完成前期各项工作。 2.2系统功能 基于系统需求分析,该系统具有以下基本功能: 用户管理:管理系统操作人员,设置操作人员账号、密码、用户资料等。 用户资料:学生通过登录,可以查询到自己的资料、成绩、排名,同时可以修改密 码。 成绩管理:管理员根据学生成绩保存到系统中,同时可计算出综合排名、平均分等 信息。 基础数据管理:维护学生资料,主要包括院系、专业设置,联系方式、学号等个人 信息设置等。 功能图 第三章 系统分析设计 3.1 建立MFC主界面及代码设计 #include "stdafx.h" //头文件 #include "学生信息管理系统.h" #include "学生信息管理系统Dlg.h" #include "xueshengziliao2.h" #include "xueshengziliao1.h" #include "stu.h" #include "fstream.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif class CAboutDlg : public CDialog //定义类CAboutDlg及数据和方法 { public: CAboutDlg(); enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataE

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧