關於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);
具體實現請看學生信息管理系統升級版