VC++实验报告(2)

2019-02-15 11:50

设置如下图所示:

为对话框中的各个控件添加消息处理函数。

第五步:

打开类向导窗口,在类名下拉列表中选择CtsuView选项,在对象ID列表框中选择ID_RECORD_FIRST选项然后再消息列表中选择COMMAND选项,单击添加处理程序,添加响应函数OnRecordFirst

6 / 16

数OnRecordLast,OnRecordNext,OnRecordPrev;

第六步:程序代码编写

用同样的方法分别为ID_RECORD_FLAST,ID_RECORD_NEXT,ID_RECORD_PREV添加事件处理函

CtsuSet类的接口定义,定义有积累Crecordset派生的CtsuSet类:

class CtsuSet : public CRecordset { public: // 重写 // 实现 #ifdef _DEBUG };

7 / 16

CtsuSet(CDatabase* pDatabase = NULL); DECLARE_DYNAMIC(CtsuSet) long m_ID; CStringW column1; CStringW column2; CStringW column3; CStringW column4;

// 向导生成的虚函数重写 public:

virtual CString GetDefaultConnect();

// 默认连接字符串

virtual CString GetDefaultSQL(); // 记录集的默认 SQL

virtual void DoFieldExchange(CFieldExchange* pFX); // RFX 支持

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

源文件CtsuSet.cpp。实现CtsuSet类的功能,初始化成员变量和数据库默认连接 CtsuSet::CtsuSet(CDatabase* pdb) { }

//数据库的默认连接

CString CtsuSet::GetDefaultConnect() { }

//数据库的默认查询

CString CtsuSet::GetDefaultSQL() { }

//数据库表格内容与成员变量的数据教皇

void CtsuSet::DoFieldExchange(CFieldExchange* pFX) {

pFX->SetFieldType(CFieldExchange::outputColumn); // RFX_Text() 和 RFX_Int() 这类宏依赖的是 // 成员变量的类型,而不是数据库字段的类型。 // ODBC 尝试自动将列值转换为所请求的类型 }

/////////////////////////////////////////////////////////////////////////////

定义CtsuView类,在CTXLView.h头文件中定义CtsuView类的接口,定义由基类CrecordView派生的类CtsuView

8 / 16

: CRecordset(pdb) m_ID = 0; column1 = L\; column2 = L\; column3 = L\; column4 = L\; m_nFields = 5;

m_nDefaultType = dynaset;

return _T(\);

return _T(\通讯录]\);

RFX_Long(pFX, _T(\通讯录ID]\), m_ID); RFX_Text(pFX, _T(\姓名]\), column1); RFX_Text(pFX, _T(\分类]\), column2); RFX_Text(pFX, _T(\电子邮件地址]\), column3); RFX_Text(pFX, _T(\联系方式]\), column4);

class CtsuView : public CRecordView {

protected: // 仅从序列化创建 public: // 特性 public: // 操作 public: // 重写 public: // 实现 public:

protected:

// 生成的消息映射函数 protected:

afx_msg void OnFilePrintPreview();

afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); DECLARE_MESSAGE_MAP() virtual ~CtsuView();

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const; #ifdef _DEBUG

virtual CRecordset* OnGetRecordset();

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 virtual void OnInitialUpdate(); // 构造后第一次调用 CtsuDoc* GetDocument() const; enum{ IDD = IDD_TSU_FORM }; CtsuSet* m_pSet; CtsuView();

DECLARE_DYNCREATE(CtsuView)

protected:

#endif

public:

9 / 16

};

afx_msg void OnButtonModify(); afx_msg void OnButtonDelete(); afx_msg void OnButtonAdd(); CString m_name; CString m_type; CString m_mail; CString m_address;

afx_msg void OnRecordFirst(); afx_msg void OnRecordLast(); afx_msg void OnRecordNext(); afx_msg void OnRecordPrev(); void RefreshData(void);

protected:

#ifndef _DEBUG // tsuView.cpp 中的调试版本 inline CtsuDoc* CtsuView::GetDocument() const

{ return reinterpret_cast(m_pDocument); } #endif

源文件CtsuView.cpp,实现类CtsuView视图显示功能:

消息映射:

IMPLEMENT_DYNCREATE(CtsuView, CRecordView)

BEGIN_MESSAGE_MAP(CtsuView, CRecordView)

// CtsuView 构造/析构

CtsuView::CtsuView()

: CRecordView(CtsuView::IDD) , m_name(_T(\)) , m_type(_T(\)) ON_WM_CONTEXTMENU() ON_WM_RBUTTONUP()

ON_BN_CLICKED(IDC_BUTTON_MODIFY, &CtsuView::OnButtonModify) ON_BN_CLICKED(IDC_BUTTON_DELETE, &CtsuView::OnButtonDelete) ON_BN_CLICKED(IDC_BUTTON_ADD, &CtsuView::OnButtonAdd) ON_COMMAND(ID_RECORD_FIRST, &CtsuView::OnRecordFirst) ON_COMMAND(ID_RECORD_LAST, &CtsuView::OnRecordLast) ON_COMMAND(ID_RECORD_NEXT, &CtsuView::OnRecordNext) ON_COMMAND(ID_RECORD_PREV, &CtsuView::OnRecordPrev)

END_MESSAGE_MAP()

10 / 16


VC++实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高中语文人教版必修1教案: 第四单元第10课短新闻两篇-别了“不

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: