VC++之MFC教程_vc mfc-程序员宅基地

技术标签: 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);
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangquan2015/article/details/79180631

智能推荐

使用 gitee+sphinx+readthedocs 搭建个人博客_添加readthedocs项目-程序员宅基地

文章浏览阅读1.1k次,点赞21次,收藏25次。gitee,是国内免费的代码托管平台,相比github在国内,有更快的访问速度,全中文界面,对国人,更友好。sphinx,是一个功能强大的文档生成器,具有许多用于编写技术文档的强大功能。readthedocs,是一个免费在线文档托管范围平台,可以使用二级域名显示个人博客。_添加readthedocs项目

详解Google Authenticator工作原理_authenticator 二维码 算法-程序员宅基地

文章浏览阅读5.5k次。详解Google Authenticator工作原理发表于2014-09-23 08:28| 10060次阅读| 来源CSDN| 16 条评论| 作者伍昆Google二维码Google Authenticator算法 摘要:Google Authenticator是谷歌推出的一款动态口令工具,旨在解决大家Google账户遭到恶意攻击的问题。那么,Authen_authenticator 二维码 算法

普通函数和箭头函数之间的区别_箭头函数和普通函数之间如何转换-程序员宅基地

文章浏览阅读1k次。I.普通函数和ES6的箭头函数除了this指向不同之外还有什么不同?A.箭头函数作为匿名函数,不能作为构造函数,不能使用new关键字B.箭头函数不绑定arguments,用rest参数...解决C.箭头函数会捕获其上下文的this值,作为自己的this值D.箭头函数当方法使用,没有定义this的绑定E.使用call()和apply()调用,传入参数时,参数一的改变对this没有..._箭头函数和普通函数之间如何转换

如果结束进程拒绝访问,可以尝试以下-程序员宅基地

文章浏览阅读2.3k次。如果taskkill /f /pid 123 出现拒绝访问时,可使用以下方式删除进程:wmic process where name=‘qq.exe’ delete11如果这样还杀不死,恐怕就要进[安全模式]删除了。杀了进程,想删除文件,可以这样删除cmd下运行:DEL /F /A /Q 文件名抄自-吉吉教主...

Visual Studio-IIS Express 支持局域网访问配置-程序员宅基地

文章浏览阅读201次。转自:http://www.itnose.net/detail/6132793.html使用Visual Studio开发Web网页的时候有这样的情况:想要在调试模式下让局域网的其他设备进行访问,以便进行测试。虽然可以部署到服务器中,但是却无法进行调试,就算是注入进程进行调试也是无法达到自己的需求;所以只能在Visual Studio-IIS Express 中进行调试。而于此将..._visual studio iis express debug localhost

Oracle 数据库层级遍历查询_oracle遍历查询结果集-程序员宅基地

文章浏览阅读1.5k次。首先创建一张用于测试的表,表明为 TREE,表中有3个字段,分别是,ID,NANE,UP_ID。UP_ID 是 ID 的上层,主要实现树形结构的存储。1.1 初始化测试数据1.1.1 写入数据1.1.2 树形结构如下图root(8)一(1)二(2)三(3)五(5)root(6)四(4)2. 树形结构遍历查询2.1 从父节点遍历查询结果如下:2.2 从子节点开始遍历查询结果是:2.3 start with 条件 connect by prior_oracle遍历查询结果集

随便推点

解卷积的维度计算_转置卷积pad多少是整数倍-程序员宅基地

文章浏览阅读4.5k次。解卷积(deconvolution)或者反卷积,类似于卷积的逆运算;如果按照严格的数学公式来叫,应该叫做“转置卷积(transpose convolution)”。解卷积最直观的作用是扩大feature map的分辨率,在语义分割任务中被广泛使用。解卷积的维度计算公式如下: w_new = stride*w - 2*pad + (kernel-stride) 从上面的公式可以看到:与卷积相..._转置卷积pad多少是整数倍

linux 块设备子系统,Linux块设备IO子系统(二) _页高速缓存-程序员宅基地

文章浏览阅读143次。磁盘驱动就是实现磁盘空间和内存空间数据上的交互,在上一篇中我们讨论了内存端的Page Segment Block Sector相关的概念,本文以3.14内核为例,讨论这部分内存是如何被组织管理的。我们知道,为了解决CPU和内存的速度不匹配,计算机系统引入了Cache缓存机制,这种硬件Cache的速度接近CPU内部寄存器的速度,可以提高系统效率,同样的思路也适用于解决内存和磁盘的速度不匹配问题,此外..._linux块设备io子系统(二)

狂神说SpringBoot07:整合JDBC-程序员宅基地

文章浏览阅读4.9k次,点赞12次,收藏48次。狂神说SpringBoot系列连载课程,通俗易懂,基于SpringBoot2.2.5版本,欢迎各位狂粉转发关注学习。未经作者授权,禁止转载SpringData简介对于数据访问层,无论是 ...

flash_镁光mt25qu01的擦除时序要求-程序员宅基地

文章浏览阅读377次。记录flash 调试过程中的问题_镁光mt25qu01的擦除时序要求

竹云+巨杉丨互信认证 安全可靠_竹云iam 操作手册-程序员宅基地

文章浏览阅读2.3k次。近日,竹云IAM统一身份安全管理平台与巨杉数据库完成技术兼容和认证工作,经双方共同严格测试,巨杉数据库V3.4与竹云身份管理与访问控制平台软件V6.0,竹云安全内控管理平台软件V6.0在兼容性、可靠性和性能等方面均能满足用户的关键性应用需求,双方将共同打造基于分布式数据库的微服务架构身份管理与访问控制系统联合解决方案。随着国家对重点行业“安全可控信息技术”的要求不断深化,也越来越强调基于国产生态环境下信息系统的自主可控。作为拥有完全自主可控国产化技术的高新科技企业,竹云与巨杉的紧密合作将为用户提供更高效、_竹云iam 操作手册

c++中string和char*的类型转换,并求string的长度_c_str() 长度-程序员宅基地

文章浏览阅读1.5k次。一、char*(char)转string(直接赋值)#include<iostream>#include<string>#include <typeinfo>using namespace std;int main(){ string str; const char* p = "ch"; //char p[] = "ch"; str = p; cout << str << endl; _c_str() 长度