MFC+sqlserver基于窗体的MFC学习

关于MFC的vs开发学习总结:
主要学习了基于窗体的MFC使用。学习方面如下:

窗体结构分三个栏目:一个是头文件,一个是cpp类文件,一个是窗体文件,头文件包含了类中所用到方法变量的声明,类文件主要写代码执行,窗体文件主要用来添加控件。

基本控件(6个):
1、radiobutton的使用,要点击属性,勾选组,保证了你所有的按钮只有一个能被选中,然后要建立类向导,添加一个按钮的成员变量,变量类型整形,用这个变量来表示按钮,获取想关属性,这个变量可以给其赋值为整数(点击按钮进入方法,给变量赋值),用来判断是否被选中。
2.编辑框的使用:给编辑框添加成员变量,变量类型CString类型,成员变量的值就是填入的值。也可把变量类型写为编辑框类型,然后使用

CString a;
 m_a.GetWindowText(a);

提取编辑框的数据。
3.按扭的使用:双击点击,进入后台代码写即可。
4.static静态文本框的使用:点击属性该内容
5.menu的插入,右击工程插入menu,插入后点击想加入的窗体的属性进行选择添加即可
6位图的使用,右击引入位图,添加一个相框选择箱添加的位图即可,注意位图做背景要另加代码防止控件被覆盖。
要在相应的头文件中加入方法声明


void CloginDlg::OnPaint() 
{

    //给对话框添加背景图片
    CPaintDC   dc(this);

    CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BITMAP2);

    BITMAP bmp;
    bitmap.GetBitmap(&bmp);   

    CDC dcview;
    dcview.CreateCompatibleDC(&dc);
    dcview.SelectObject(&bitmap);

    CRect rect;
    GetClientRect(&rect);

    dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcview,
        0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    /////////////////////////////////////////
    ////////////////////////////////////////
}

数据控件:(vc没有这些控件要百度——adodata,的相关控件安装方法)
1.ado data的使用,这个控件使用了ado进行的数据库连接,要点击第二个框连接数据库,然后点击recordsource选择要选择的查询方式,有sql语句,存储查询,整表查询。选择之后还可以吧这个控件进行变量声明(m_f)调用方法SetRecordSource来结合我们的变量按条件进行查询。

 m_f.SetRecordSource("select * from adm where name='"+a+"' or password='"+a+"' ");
 m_f.Refresh();
 UpdateData(false);

2.datagrid:这个控件配合ado data进行使用,点击属性的全部然后选择adodata数据源即可显示数据,这个控件的属性可以勾选是否允许修改,在general里

3使用odbc进行数据查询,声明 下列代码包含了在静态文本中显示图形的代码

include "afxdb.h"
CDatabase m_Pmydatabase1;//数据库
CRecordset m_set1;//数据集
void Cstudent_info::OnButton1() 
{
    // TODO: Add your control notification handler code here
    //DSN配置的数据源
    m_Pmydatabase1.Open ("ODBC;DSN=datasource;username=sa;password=123456;");
    m_set1.m_pDatabase =&m_Pmydatabase1;
    CString ssql;
    ssql="select * from stu where sno='"+username+"'";
    m_set1.Open (CRecordset::forwardOnly,ssql,CRecordset::readOnly);
    UpdateData(true);
    CString str1;
    if(!m_set1.IsEOF())
    {
        m_set1.GetFieldValue("name",str1);  
        SetDlgItemText(IDC_EDIT1,str1);
        m_set1.GetFieldValue("sno",str1);   
        SetDlgItemText(IDC_EDIT2,str1);
        m_set1.GetFieldValue("address",str1);   
        SetDlgItemText(IDC_EDIT3,str1);
        m_set1.GetFieldValue("Sdept",str1); 
        SetDlgItemText(IDC_EDIT4,str1);

        m_set1.GetFieldValue("photo",str1);

        this->m_image.ModifyStyle(0,SS_BITMAP|SS_CENTERIMAGE);
        HBITMAP hbmp=(HBITMAP)::LoadImage  (0,str1,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
        this->m_image.SetBitmap (hbmp); 
    }
        UpdateData(true);
        m_set1.Close ();
       m_Pmydatabase1.Close();

}

4.odbc进行数据插入(插入图片):

include "afxdb.h"
CDatabase m_Pmydatabase1244;
void Cstudentinfo::OnButton1() 
{
    int nSel;CString strWeb;
    nSel=m_comm.GetCurSel();
    m_comm.GetLBText(nSel,strWeb);

    // TODO: Add your control notification handler code here
    CString str1;
    // TODO: Add your control notification handler code here
    if(!m_Pmydatabase1244.IsOpen())//判断是否进行数据库连接
    {
        m_Pmydatabase1244.Open ("ODBC;DSN=datasource;UID=sa;PWD=123456;");  
    }
    CFileDialog dlg(true,NULL,NULL,OFN_OVERWRITEPROMPT,"(*.*)|*.*",this);
    if(dlg.DoModal()==IDOK)//文件的对话框如果打开(*.*)|*.*||"
    {
        CString ssql,str;   
        CString pathname1;
        pathname1=dlg.GetPathName();
        MessageBox(pathname1);
        ssql="update stu set photo='"+pathname1+"' where   sno='"+strWeb+"'";//%s是pathname1的值,进行类型的转换
       // ssql="insert into Paper(Sno,Pname,Pauthor,Ppath) values('"+username123+"','"+papername+"','"+str+"','"+pathname1+"')";
   m_Pmydatabase1244.ExecuteSQL(ssql);//此函数对数据库内容的一系列的操作


    MessageBox("文件上传成功!");


    UpdateData(true);

    }
  m_Pmydatabase1244.Close();//关闭基类

}

4下拉列表:

void Cstudentinfo::OnButton3() 
{
    // TODO: Add your control notification handler code here
    CString var1;
    // TODO: Add your control notification handler code here
        m_mydatabase300.Open   ("ODBC;DSN=datasource;username=sa;password=123456;");
    m_set300.m_pDatabase =&m_mydatabase300;
    CString ssql;
    ssql="select * from stu ";
    m_set300.Open(CRecordset::forwardOnly,ssql,CRecordset::readOnly);

    while(!m_set300.IsEOF())
    {   
        m_set300.GetFieldValue("sno",var1);//Sno是列名

        m_comm.AddString (var1);
        m_set300.MoveNext ();
    }

    m_set300.Close ();

}

获取选择值的代码

    int nSel;CString strWeb;
    nSel=m_comm.GetCurSel();
    m_comm.GetLBText(nSel,strWeb);

具体实现请看学生信息管理系统升级版

你可能感兴趣的:(C++)