MFC 通讯录

本文档详细介绍了如何使用MFC(Microsoft Foundation Classes)库来开发一个简单的通讯录应用。主要涵盖了对话框类TXLDlg的实现,包括控件的添加、事件处理及数据存储等关键步骤。
摘要由CSDN通过智能技术生成

TXLDlg.cpp

// TXLDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "TXL.h"
#include "TXLDlg.h"
#include "afxdialogex.h"


// CTXLDlg 对话框

struct infomation
{
    long long BH;    //编号
    CString bh;       //编号 数据库
    CString XM;     //姓名
    CString XB;     //性别    
    CString XH;     //学号
    CString DH;     //电话
    CString QQ;     //QQ
    CString ZH;     //住址
}stinfo[10];


IMPLEMENT_DYNAMIC(CTXLDlg, CDialogEx)

CTXLDlg::CTXLDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(IDD_DIALOG2, pParent)
{

}

CTXLDlg::~CTXLDlg()
{
}

void CTXLDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_TXL_LIST, m_TXLList);
}


BEGIN_MESSAGE_MAP(CTXLDlg, CDialogEx)
    ON_NOTIFY(LVN_ITEMCHANGED, IDC_TXL_LIST, &CTXLDlg::OnLvnItemchangedTxlList)
    ON_NOTIFY(NM_CLICK, IDC_TXL_LIST, &CTXLDlg::OnNMClickTxlList)
    ON_BN_CLICKED(IDC_DR_BUTTON, &CTXLDlg::OnBnClickedDrButton)
    ON_BN_CLICKED(IDC_DC_BUTTON, &CTXLDlg::OnBnClickedDcButton)
END_MESSAGE_MAP()


// CTXLDlg 消息处理程序


BOOL CTXLDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // TODO:  在此添加额外的初始化

    m_TXLList.EnsureVisible(m_TXLList.GetItemCount() - 1, FALSE);  //滚动条

    bIsCreateEdit = false;          // 还没有创建编辑框 
    bIsCreateCombobox = false;      //还没有创建下拉列表框

    CRect rect;                     //获取list的客户区,方便调节每一列的宽度
    m_TXLList.GetClientRect(&rect);
    m_TXLList.SetExtendedStyle(m_TXLList.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    m_TXLList.InsertColumn(0, _T("编号"), LVCFMT_LEFT, rect.right / 7, 0);
    m_TXLList.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, rect.right / 7, 1);
    m_TXLList.InsertColumn(2, _T("性别"), LVCFMT_LEFT, rect.right / 7, 2);
    m_TXLList.InsertColumn(3, _T("学号"), LVCFMT_LEFT, rect.right / 7, 3);
    m_TXLList.InsertColumn(4, _T("电话"), LVCFMT_LEFT, rect.right / 7, 4);
    m_TXLList.InsertColumn(5, _T("QQ"), LVCFMT_LEFT, rect.right / 7, 5);
    m_TXLList.InsertColumn(6, _T("住址"), LVCFMT_LEFT, rect.right / 7, 6);

    /*for (int i = 0; i <= 0; i++)
    {
        m_TXLList.InsertItem(i, _T(""));
        m_TXLList.SetItemText(i, 0, _T(""));
        m_TXLList.SetItemText(i, 1, _T(""));
        m_TXLList.SetItemText(i, 2, _T(""));
        m_TXLList.SetItemText(i, 3, _T(""));
        m_TXLList.SetItemText(i, 4, _T(""));
        m_TXLList.SetItemText(i, 5, _T(""));
        m_TXLList.SetItemText(i, 6, _T(""));
    }*/

    //AfxOleInit();     //初始化COM并结束时关闭

    return TRUE;  // return TRUE unless you set the focus to a control
                  // 异常: OCX 属性页应返回 FALSE
}


void CTXLDlg::OnLvnItemchangedTxlList(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    *pResult = 0;
}


void CTXLDlg::OnNMClickTxlList(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    NM_LISTVIEW  *pEditCtrl = (NM_LISTVIEW *)pNMHDR;         /////////// &&&&& important  &&&////////////////////////////////////////////////
    //printf("行:%d,列:%d\n", pEditCtrl->iItem, pEditCtrl->iSubItem);
    if (pEditCtrl->iItem == -1)//点击到非工作区
    {
        if (bIsCreateEdit == true)//如果之前创建了编辑框就销毁掉
        {
            DistroyEdit(&m_TXLList, &m_Edit, e_Item, e_SubItem);//销毁单元格编辑框对象
            bIsCreateEdit = false;
        }
        if (bIsCreateCombobox == true)//如果之前创建了下拉列表框就销毁掉
        {
            DistroyCombobox(&m_TXLList, &m_ComBox, e_Item, e_SubItem);
            bIsCreateCombo
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值