VC++之MFC教程

VC++之MFC教程

初步使用MFC

(1)File-New新建对话框程序

(2)设置控件类型和属性,LIST属性设置为报告(Report):
这里写图片描述
这里写图片描述
这里写图片描述
(3)在对话框文件First32Dlg.cpp中修改初始化程序:

BOOL CFirst32Dlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
    pList->InsertColumn(0,"学号",0,100);
    pList->InsertColumn(1,"姓名",0,100);
    pList->InsertColumn(2,"工资",0,100);
    //剩余部分不变
}

(4)分别双击三个按钮,添加关联函数:

void CFirst32Dlg::OnAdd() 
{
    // TODO: Add your control notification handler code here
    CString szNumb,szName,szSala;
    GetDlgItemText(IDC_NUMB,szNumb);
    GetDlgItemText(IDC_NAME,szName);
    GetDlgItemText(IDC_SALA,szSala);
    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
    int nCount = pList->GetItemCount();
    pList->InsertItem(nCount,szNumb);
    pList->SetItemText(nCount,1,szName);
    pList->SetItemText(nCount,2,szSala);
}

void CFirst32Dlg::OnDel() 
{
    // TODO: Add your control notification handler code here
    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
    int nSel=pList->GetSelectionMark();
    if(nSel<0)
    {
        AfxMessageBox("请选择列表中的员工号码在删除!");
        return;
    }
    pList->DeleteItem(nSel);

}

void CFirst32Dlg::OnMod() 
{
    // TODO: Add your control notification handler code here
    CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
    int nSel = pList->GetSelectionMark();
    if(nSel<0)
    {
        AfxMessageBox("请选择列表中的员工号码再修改!");
        return;
    }
    CString szNumb,szName,szSala;
    GetDlgItemText(IDC_NUMB,szNumb);
    GetDlgItemText(IDC_NAME,szName);
    GetDlgItemText(IDC_SALA,szSala);
    pList->SetItemText(nSel,0,szNumb);
    pList->SetItemText(nSel,1,szName);
    pList->SetItemText(nSel,2,szSala);

}

(5)编译运行。

简单计算器

(1)新建对话框,拖入三个编辑框,一个组合框,一个静态文本,一个按钮
这里写图片描述
(2)修改对话框控件属性:
这里写图片描述
(3)在下拉列表属性中设置为Drop List,去掉Sort属性,添加五个操作符:
这里写图片描述
这里写图片描述
(4)打开类向导,分别对控件添加成员变量:
这里写图片描述
(5)双击“计算”按钮,添加响应函数:

void CCalcDlg::OnOK() 
{
    // TODO: Add extra validation here
    UpdateData();
    switch(m_nOper)
    {
    case 0:
        m_nResult = m_nLeft+m_nRight;
        break;
    case 1:
        m_nResult = m_nLeft-m_nRight;
        break;
    case 2:
        m_nResult = m_nLeft*m_nRight;
        break;
    case 3:
        m_nResult = m_nLeft/m_nRight;
        break;
    case 4:
        m_nResult = m_nLeft%m_nRight;
        break;
    }
    UpdateData(FALSE);
    //CDialog::OnOK();
}

常用控件的数值型变量

(1)新建对话框程序,添加控件:
这里写图片描述
(2)修改控件属性:
这里写图片描述
这里写图片描述
(3)控件添加成员变量:
这里写图片描述
(4)修改构造函数三部分:

CVdDlg::CVdDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CVdDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CVdDlg)
    m_nEduca = 1;//默认为-1,改为1===================================
    m_bEngl = TRUE;//默认为FALSE,改为TRUE
    m_bJapa = FALSE;
    m_dtJoin = COleDateTime::GetCurrentTime();
    m_bKorea = FALSE;
    m_szName = _T("");
    m_szNumb = _T("");
    m_bRuss = FALSE;
    m_nSex = 0;//默认为-1改为0========================================
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

(5)初始化函数增加代码:

BOOL CVdDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Add "About..." menu item to system menu.

    m_list.InsertColumn(0,"工号",0,80);
    m_list.InsertColumn(1,"姓名",0,80);
    m_list.InsertColumn(2,"性别",0,60);
    m_list.InsertColumn(3,"学历",0,80);
    m_list.InsertColumn(4,"入职",0,80);
    m_list.InsertColumn(5,"外语",0,100);
    m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);

    // IDM_ABOUTBOX must be in the system command range.
    //***********************************************
}

(6)添加按钮消息响应函数:

void CVdDlg::OnAdd() 
{
    // TODO: Add your control notification handler code here
    UpdateData();
    int nCount = m_list.GetItemCount();
    m_list.InsertItem(nCount,m_szNumb);
    m_list.InsertItem(nCount,m_szName);
    m_list.SetItemText(nCount,2,m_nSex?"女":"男");
    char *p[]={"高中","大学","硕士","博士"};
    m_list.SetItemText(nCount,3,p[m_nEduca]);
    CString str;
    if(m_bEngl)
        str+="英";
    if(m_bJapa)
        str+="日";
    if(m_bRuss)
        str+="俄";
    if(str.IsEmpty())
        str+="无";
    m_list.SetItemText(nCount,5,str);
    str.Format("%d-%d-%d",m_dtJoin.GetYear(),m_dtJoin.GetMonth(),m_dtJoin.GetDay());
    m_list.SetItemText(nCount,4,str);

}

void CVdDlg::OnDel() 
{
    // TODO: Add your control notification handler code here
    POSITION pos = m_list.GetFirstSelectedItemPosition();
    if(!pos)
    {
        AfxMessageBox("请选择一行再删除!");
        return;
    }
    int nSel=m_list.GetNextSelectedItem(pos);
    CString str=m_list.GetItemText(nSel,0);
    str="确认删除" + str + "号信息吗?";
    if(AfxMessageBox(str,MB_YESNO)==IDYES)
        m_list.DeleteItem(nSel);

}

void CVdDlg::OnMod() 
{
    // TODO: Add your control notification handler code here
    POSITION pos = m_list.GetFirstSelectedItemPosition();
    if(!pos)
    {
        AfxMessageBox("请选择一行再删除!");
        return;
    }
    int nSel = m_list.GetItemCount();
    m_list.SetItemText(nSel,0,m_szNumb);
    m_list.SetItemText(nSel,1,m_szName);
    m_list.SetItemText(nSel,2,m_nSex?"女":"男");
    char *p[]={"高中","大学","硕士","博士"};
    m_list.SetItemText(nSel,3,p[m_nEduca]);
    CString str;
    if(m_bEngl)
        str+="英";
    if(m_bJapa)
        str+="日";
    if(m_bKorea)
        str+="韩";
    if(m_bRuss)
        str+="俄";
    if(str.IsEmpty())
        str+="无";
    m_list.SetItemText(nSel,5,str);
    str.Format("%d-%d-%d",m_dtJoin.GetYear(),m_dtJoin.GetMonth(),m_dtJoin.GetDay());
    m_list.SetItemText(nSel,4,str);
}

画矩形

void CCpenDlg::OnPaint() 
{
    CPaintDC dc(this);
    //dc.MoveTo(20,20);
    //dc.LineTo(120,20);
    CPen pn1(PS_SOLID,1,RGB(255,0,0));
    //CPen* pOldPen=dc.SelectObject(&pn1);
    //dc.MoveTo(20,30);
    //dc.LineTo(120,30);
    dc.SelectObject(pn1);
    dc.Rectangle(140,20,240,100);
}
VC++MFC教程 第一部分 基础知识 第1章 窗口 2 1.1 窗口和API环境 2 1.1.1 三种类型窗口 2 1.1.2 客户区和非客户区 3 1.2 窗口和MFC环境 4 1.3 怎样应用MFC创建一个窗口 5 1.4 怎样使用MFC销毁一个窗口 9 1.4.1 捆绑到一个已有的窗口 9 1.4.2 窗口类 10 1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商安装的窗口类 14 1.8 其他类型窗口 15 1.9 桌面窗口 16 1.10 小结 16 第2章 类 18 2.1 基类 18 2.1.1 CObject 18 2.1.2 CCmdTarget 19 2.1.3 CWnd 19 2.2 应用程序、框架、文档和视图类 19 2.2.1 CWinApp(O/C/W) 20 2.2.2 CView (O/C/W) 21 2.3 其他用户界面类 22 2.3.1 通用控件类 23 2.3.2 菜单类 23 2.3.3 对话框类 24 2.3.4 控制条类 24 2.3.5 属性类 25 2.4 绘图类 25 2.4.1 设备环境类 25 2.4.2 图形对象类 25 2.5 文件类 26 2.6 数据库类 26 2.6.1 ODBC类 26 2.6.2 DAO类 27 2.7 数据集类 27 2.8 其他数据类 27 2.9 通信类 28 2.10 其他类 29 2.11 小结 31 第3章 消息处理 32 3.1 发送或寄送一个消息 32 3.1.1 发送一个消息 32 3.1.2 寄送一个消息 32 3.1.3 发送一个消息与寄送一个消息 的比较 32 3.2 怎样使用MFC发送一个消息 33 3.3 怎样用MFC寄送一个消息 33 3.4 三种类型的消息 34 3.4.1 窗口消息 34 3.4.2 命令消息 34 3.4.3 控件通知 34 3.5 MFC怎样接收一个寄送的消息 36 3.6 MFC怎样处理一个接收到的消息 36 3.7 处理用户界面的对象 44 3.8 创建自定义窗口消息 45 3.8.1 静态分配的窗口消息 45 3.8.2 动态分配的窗口消息 46 3.9 重定向消息 47 3.9.1 子分类和超分类 47 3.9.2 用MFC子分类窗口 48 3.9.3 重载OnCmdMsg ( ) 49 3.9.4 使用SetWindowsHookEx ( ) 49 3.9.5 使用SetCapture ( ) 49 3.9.6 专有的消息泵 50 3.10 小结 50 第4章 绘图 51 4.1 设备环境 51 4.2 在MFC环境中创建一个设备环境 52 4.2.1 屏幕 52 4.2.2 打印机 53 4.2.3 内存 54 4.2.4 信息 54 4.3 绘图例程 55 4.3.1 画点 55 4.3.2 画线 55 4.3.3 画形状 55 4.3.4 形状填充和翻转 55 4.3.5 滚动 56 4.3.6 绘制文本 56 4.3.7 绘制位图和图标 56 4.4 绘图属性 56 4.4.1 设备环境属性 57 4.4.2 画线属性 58 4.4.3 形状填充属性 58 4.4.4 文本绘制属性 58 4.4.5 映像模式 59 4.4.6 调色板属性 62 4.4.7 混合属性 62 4.4.8 剪裁属性 63 4.4.9 位图绘制属性 64 4.5 元文件和路径 65 4.5.1 元文件 65 4.5.2 路径 66 4.6 颜色和调色板 66 4.6.1 抖动色 67 4.6.2 未经抖动色 67
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值