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);

具體實現請看學生信息管理系統升級版

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章