进行注释。
五、源程序清单
///////////////////////////////////////////////////////////////////////////// // 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); //}}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)
// DDX/DDV support 11
//}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CPhoneBookDlg dialog
CPhoneBookDlg::CPhoneBookDlg(CWnd* pParent /*=NULL*/) : CDialog(CPhoneBookDlg::IDD, pParent) { //{{AFX_DATA_INIT(CPhoneBookDlg) m_szAddress = _T(\ m_szCode = _T(\ m_szName = _T(\ m_szPhone = _T(\ m_szSearchContent = _T(\ //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); }
void CPhoneBookDlg::DoDataExchange(CDataExchange* pDX) 对话框控件和成员变量交换的函数{ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPhoneBookDlg) DDX_Control(pDX, IDC_ADD, m_Button_Add); DDX_Control(pDX, IDC_NAME, m_IDC_Name); DDX_Control(pDX, IDC_NAMELIST, m_NameList); DDX_Text(pDX, IDC_ADDRESS, m_szAddress); DDX_Text(pDX, IDC_CODE, m_szCode); DDX_Text(pDX, IDC_NAME, m_szName); DDX_Text(pDX, IDC_PHONE, m_szPhone); DDX_Text(pDX, IDC_SEARCHCONTENT, m_szSearchContent); //}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CPhoneBookDlg, CDialog) //{{AFX_MSG_MAP(CPhoneBookDlg)
12
ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_UPDATE, OnUpdate) ON_BN_CLICKED(IDC_ADD, OnAdd) ON_LBN_SELCHANGE(IDC_NAMELIST, OnSelchangeNamelist) ON_BN_CLICKED(IDC_DELETE, OnDelete) ON_BN_CLICKED(IDC_CLEAR, OnClear) ON_WM_CLOSE() ON_BN_CLICKED(IDC_ABOUT, OnAbout) ON_BN_CLICKED(IDC_SEARCHBYNAME, OnSearchbyname) ON_BN_CLICKED(IDC_SEARCHBYPHONE, OnSearchbyphone) //}}AFX_MSG_MAP END_MESSAGE_MAP()
// CPhoneBookDlg 消息处理函数
BOOL CPhoneBookDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add \ // 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 DataInit();//调用数据初始化函数(自定义函数) return TRUE; // return TRUE unless you set the focus to a control }
13
void CPhoneBookDlg::OnSysCommand(UINT nID, LPARAM lParam)
// 对话框的系统菜单命令,包括关闭对话框,最小化最大化,弹出关于对话框等等 { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }
void CPhoneBookDlg::OnPaint() // 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(&rect); 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(); } }
HCURSOR CPhoneBookDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; }
/**********************************************\\ 函数原型:void DataInit()
14
功能:完成从文件读取数据的操作,如果文件不存在则只建立链表 输入输出均为空,只是一个过程.
***********************************************/ void CPhoneBookDlg::DataInit() { struct PhoneCard *p,*q;//定义两个临时指针 bFileEmpty=FALSE;//文件默认为不空 bNewFile=FALSE;//假定不是新文件 bFileModified=FALSE;//初始化文件属性 p=head=(struct PhoneCard*)malloc(sizeof(struct PhoneCard)); head->prev=head->next=NULL;//建立头结点(不存放数据) if(!(fp=fopen(\试图用只读方式打开数据文件,如文件不存在则fp返回NULL值 { bNewFile=TRUE;//文件不存在,当然是新文件了 bFileEmpty=TRUE;//文件当前状态是空的,第一次运行程序嘛 iCount=0;//总结点数为0,注意不包括头结点,头结点不用来存放数据 last=head;//尾结点此时就是头结点 } if(!bFileEmpty)//因为文件默认为不空,如果文件已存在,则从文件中读取数据建立链表 { fread(&iCount,sizeof(int),1,fp);//先从文件中读取总结点数 for(int i=0;i
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于C++的通讯录管理系统课程设计(3)在线全文阅读。
相关推荐: