第一篇:mfc近期學習總結
1.void CDlgSysF9::DoDataExchange(CDataExchange* pDX){
CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_CBOX_CANTILEVER, m_combox_cantilever);} 這個函數是類自動生成的,一般情況下用add variable添加控件變量之后會自動生成DDX_Control(pDX, IDC_CBOX_CANTILEVER, m_combox_cantilever);這行代碼 如果是用代碼添加控件變量的話,要手動加上這一句,ID號和相應的變量名 2.對combo box添加變量之后用下面的代碼添加下拉框的選項
m_combox_cantilever.AddString(_T(“haha”));m_combox_cantilever.SetCurSel(0);CDlgSysF9AdjOrigin SysF9AdjOringin;//類名定義一個變量 SysF9AdjOringin.DoModal();//彈窗操作 記得包含CDlgSysF9AdjOrigin的頭文件
4.畫刷的使用,改變字體顏色和背景顏色【字體顏色、字體的背景顏色、大背景顏色】
CBrush m_brush;記得初始化畫刷
m_brush.CreateSolidBrush(RGB(128,128,128));if(pWnd->GetDlgCtrlID()==IDC_STC_ROLL)
5.在list control 中添加控件變量后插入一列的操作
m_List.InsertColumn(0,_T(“G1F-X”));插入一行
m_List.InsertItem(1,_T(“G1F-X”));m_list1.InsertColumn(0, _T(“HEAD”),Width, ListCtrlEx::Normal, LVCFMT_CENTER, ListCtrlEx::SortByDigit);
6.用代碼獲取edit box的指針并設置editbox只讀
CEdit* pEdit =(CEdit*)GetDlgItem(IDC_EDIT_HOFFSET);Edit-> SetReadOnly(TRUE);SetDlgItemText(IDC_EDIT_HPOSITION,L“0.000”);8.設置一個控件disable GetDlgItem(IDC_CHECK_MANUAL)->EnableWindow(FALSE);9.隱藏或顯示控件
m_check_auto.ShowWindow(SW_HIDE);m_check_auto.ShowWindow(SW_SHOW);10.button上添加icon 7.設置對話框中某一控件中現實的文本 {
} pDC->SetTextColor(RGB(0,0,0));// 設置字的顏色 pDC->SetBkColor(RGB(128,128,128));// 設置背景顏色 hbr=m_brush;3.按鈕button彈出對話框的代碼 CButtonST m_btn_move;m_btn_move.SetIcon(IDI_ICO_MOVE);m_btn_move.SetFlat(FALSE);//設置按鈕為非平面效果的按鈕 11.定義指針變量 CComboBox *m_pCamera;m_pCamera=NULL;m_pCamera=(CComboBox*)GetDlgItem(IDC_BOX_CAMERA);//獲?取¨?combobox窗???口¨2指?針? m_pCamera->AddString(L“標à¨o準á?相¨¤機¨21”);m_pCamera->SetCurSel(0);12.SetItemText給list control中的單元添加文本
SetItemText這個函數一共有三個參數,第一個是要設置文本的項目號,第二個是子項目號,第三個是要設置的文本。
13.獲得控件的坐標
CRect listRect;m_list1.GetClientRect(&listRect);int Width=(listRect.Width())/5;14.傳送帶實例
void CDlgSysF9Conveyor::OnLButtonDown(UINT nFlags, CPoint point){
// TODO: Add your message handler code here and/or call default // when btn down on 123,select which rectangle is show on 123 CRect rect1;CRect rect2;CRect rect3;GetDlgItem(IDC_STATIC_FIRST)->GetWindowRect(&rect1);ScreenToClient(rect1);if(rect1.PtInRect(point)){
} GetDlgItem(IDC_STATIC_SECOND)->GetWindowRect(&rect2);ScreenToClient(rect2);if(rect2.PtInRect(point))CBitmap bitmap;bitmap.LoadBitmap(IDB_BMP_WHITE);((CStatic*)GetDlgItem(IDC_STATIC_FIRST))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_SECOND))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_THIRD))->SetBitmap(static_cast< m_combox_station.SetCurSel(0);HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));
} {
} GetDlgItem(IDC_STATIC_THIRD)->GetWindowRect(&rect3);ScreenToClient(rect3);if(rect3.PtInRect(point)){
} //combox
CDialogEx::OnLButtonDown(nFlags, point);CBitmap bitmap;bitmap.LoadBitmap(IDB_BMP_WHITE);((CStatic*)GetDlgItem(IDC_STATIC_THIRD))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_FIRST))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_SECOND))->SetBitmap(static_cast< m_combox_station.SetCurSel(2);CBitmap bitmap;bitmap.LoadBitmap(IDB_BMP_WHITE);((CStatic*)GetDlgItem(IDC_STATIC_SECOND))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_FIRST))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_THIRD))->SetBitmap(static_cast< m_combox_station.SetCurSel(1);HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));void CDlgSysF9Conveyor::OnLButtonUp(UINT nFlags, CPoint point){
// TODO: Add your message handler code here and/or call default CRect rect1;CRect rect2;CRect rect3;switch(m_flag){
case Flg2:
{
// when btn down on 123,select which rectangle is show on 123 GetDlgItem(IDC_STATIC_FIRST)->GetWindowRect(&rect1);ScreenToClient(rect1);if(rect1.PtInRect(point)){
} GetDlgItem(IDC_STATIC_SECOND)->GetWindowRect(&rect2);ScreenToClient(rect2);if(rect2.PtInRect(point)){
} GetDlgItem(IDC_STATIC_THIRD)->GetWindowRect(&rect3);ScreenToClient(rect3);if(rect3.PtInRect(point)){
CBitmap bitmap;bitmap.LoadBitmap(IDB_BMP_WHITE);((CStatic*)GetDlgItem(IDC_STATIC_THIRD))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_FIRST))->SetBitmap(static_cast< CBitmap bitmap;bitmap.LoadBitmap(IDB_BMP_WHITE);((CStatic*)GetDlgItem(IDC_STATIC_SECOND))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_FIRST))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_THIRD))->SetBitmap(static_cast< CBitmap bitmap;bitmap.LoadBitmap(IDB_BMP_WHITE);((CStatic*)GetDlgItem(IDC_STATIC_FIRST))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_SECOND))->SetBitmap(static_cast< bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_THIRD))->SetBitmap(static_cast< HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));HBITMAP >(bitmap.Detach()));
}
}
}
} bitmap.LoadBitmap(IDB_BMP_BLACK);((CStatic*)GetDlgItem(IDC_STATIC_SECOND))->SetBitmap(static_cast< HBITMAP >(bitmap.Detach()));m_flag=Flg1;ClipCursor(NULL);// If this parameter is NULL, the cursor is free to move anywhere on //m_startRect=false;
CDialogEx::OnLButtonUp(nFlags, point);the screen.16.list control中獲得選中的位置索引
//獲得list control被選中的列的索引
void CDlgSysF9CameraZroffset::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult){ LPNMLISTVIEW pNMLV = reinterpret_cast
DWORD dwPos = GetMessagePos();CPoint point(LOWORD(dwPos), HIWORD(dwPos));m_list1.ScreenToClient(&point);//定義結構體
LVHITTESTINFO lvinfo;lvinfo.pt = point;lvinfo.flags = LVHT_ABOVE;int nItem = m_list1.SubItemHitTest(&lvinfo);if(nItem!=-1){
//CString strtemp;
//strtemp.Format(_T(“所選中的是第%d行D第%d列”), lvinfo.iItem, lvinfo.iSubItem);//AfxMessageBox(strtemp);int column=lvinfo.iSubItem;switch(column){ case 1:
GetDlgItem(IDC_BTN_TEST_ZOFFSET)->EnableWindow(TRUE);GetDlgItem(IDC_BTN_TEST_NOZZLE)->EnableWindow(FALSE);m_check_manual.ShowWindow(SW_SHOW);m_check_auto.ShowWindow(SW_SHOW);break;GetDlgItem(IDC_BTN_TEST_ZOFFSET)->EnableWindow(FALSE);//獲取單擊所在行數
case 2:
} GetDlgItem(IDC_BTN_TEST_NOZZLE)->EnableWindow(TRUE);m_check_manual.ShowWindow(SW_HIDE);m_check_auto.ShowWindow(SW_HIDE);break;17.C++中 public,protected,private 訪問標號小結
第一:private, public, protected 訪問標號的訪問范圍。private:只能由1.該類中的函數、2.其友元函數訪問。不能被任何其他訪問,該類的對象也不能訪問。
protected:可以被1.該類中的函數、2.子類的函數、以及3.其友元函數訪問。但不能被該類的對象訪問。
public:可以被1.該類中的函數、2.子類的函數、3.其友元函數訪問,也可以由4.該類的對象訪問。
注:友元函數包括3種:設為友元的普通的非成員函數;設為友元的其他類的成員函數;設為友元類中的所有成員函數。
第二篇:MFC實踐總結
mfc編程實驗總結報告 知識總結+個人心得 2011年暑期mfc編程實驗報告 mfc編程實驗個人總結報告
一、mfc類、函數等知識小結:
1、settimer(1, m_intlevel, null);在mfc程序中settimer被封裝在cwnd類中,調用就不用指定窗口句柄了于是settimer函數的原型變為: uint settimer(uint nidevent,uint nelapse,void(callback export *lpfntimer)(hwnd,uint ,yint ,dword))當使用settimer函數的時候,就會生成一個計時器。函數中nidevent指的是計時器的標識,也就是名字。nelapse指的是時間間隔,也就是每隔多長時間觸發一次事件。第三個參數是一個回調函數,在這個函數里,放入你想要做的事情的代碼,你可以將它設定為null,也就是使用系統默認的回調函數,系統默認認的是ontime函數。這個函數怎么生成的呢?你需要在需要計時器的類的生成ontime函數:在classwizard里,選擇需要計時器的類,添加wm_time消息映射,就自動生成ontime函數了。然后在函數里添加代碼,讓代碼實現功能。每隔一段時間就會自動執行一次。例: settimer(1,1000,null);1:計時器的名稱;
1000:時間間隔,單位是毫秒; null:使用ontime函數。
當不需要計時器的時候調用killtimer(nidevent);例如:killtimer(1);killtimer(1);
2、typedef struct{};(1)struct{ int x;int y;}test1;好,定義了 結構 test1,test1.x 和 test1.y 可以在語句里用了。(2)struct test {int x;int y;}test1;定義了結構 test1,test1.x 和 test1.y 可以在語句里用了。
與(1)比,省寫 了 test(3)typedef struct test {int x;int y;}text1,text2;此處時說了這種結構體(類型)別名 叫 text1 或叫 text2,而不是定義了結構體變量.真正在語句里用,還要寫: text1 test1;//定義結構體變量
然后好用 test1.x test1.y 或寫 text2 test1;//定義結構體變量
然后好用 test1.x test1.y
3、invalidate();//讓客戶區無效,即時重新繪制客戶區 void invalidate(bool berase = true);該函數的作用是使整個窗口客戶區無效。窗口的客戶區無效意味著需要重繪,例如,如果一個被其它窗口遮住的窗口變成了前臺窗口,那么原來被遮住的部分就是無效的,需要重繪。這時windows會在應用程序的消息隊列中放置wm_paint消息。mfc為窗口類提供了wm_paint的消息處理函數onpaint,onpaint負責重繪窗口。視圖類有一些例外,在視圖類的onpaint函數中調用了ondraw函數,實際的重繪工作由ondraw來完成。參數berase為true時,重繪區域內的背景將被擦除,否則,背景將保持不變。
4、cdc::rectangle(左上x,左上y,右下x,右下y);使用該函數畫一個矩形,可以用當前的畫筆畫矩形輪廓,用當前畫刷進行填充。
函數原型:bool rectangle(hdc hdc, int nleftrect, int ntoprect, int nrightrect, int nbottomrect);
hdc:設備環境句柄。
nleftrect:指定矩形左上角的邏輯x坐標。ntoprect:指定矩形左上角的邏輯y坐標。nrightrect:指定矩形右下角的邏輯x坐標。nbottomrect:指定矩形右下角的邏輯y坐標。
5、cbrush:: cbrush//畫刷類 eg:cbrush brushstick(rgb(127, 127, 127));四種構造函數: cbrush();cbrush(colorref crcolor);cbrush(int nindex, colorref crcolor);cbrush(cbitmap* pbitmap);參數說明: crcolor指定畫刷的前景色(rgb方式)。如果畫刷是陰影線型的,則指定陰影線的顏色。nindex指定畫刷陰影線采用的風格,取值如下: hs_bdiagonal45度的向下影線(從左到右)hs_cross水平和垂直方向以網格線作出陰影 hs_diagcross 45度的網格線陰影 hs_fdiagonal 45度的向上陰影線(從左到右)
hs_horizontal 水平的陰影線 hs_vertical 垂直的陰影線 pbitmap指向cbitmap對象的指針,該對象指定了畫刷要繪制的位
圖。
構造函數說明:
6、messagebox(game over!);messagebox(null,text,title,button);參數title:string類型,指定消息對話框的標題。text:指定消息對話框中顯示的消息,該參數可以是數值數據類型、字符串或boolean值。icon:icon枚舉類型,可選項,指定要在該對話框左側顯示的圖標。button:button枚舉類型,可選項,指定顯示在該對話框底部的按鈕。default:數值型,可選項,指定作為缺省按鈕的按鈕編號,按鈕編號自左向右依次計數,缺省值為1,如果該參數指定的編號超過了顯示的按鈕個數,那么messagebox()函數將使用缺省值返回值integer。函數執行成功時返回用戶選擇的按鈕編號(例如1、2、3等),發生錯誤時返回-1。如果任何參數的值為null,messagebox()函數返回null。
函數原型:
messagebox.show(text,title,messageboxbuttons,messageboxicon ,messageboxdefaultbuttons)參數說明:
(1)text:必選項,消息框的正文。
(2)title:可選項,消息框的標題。(3)messageboxbuttons:可選項,消息框的按鈕設置,默認只顯示【確定】按鈕。ok――確定 okcancel――確定和取消 abortretryignore――終止、重試和忽略 yesnocancel――是、否和取消 yesno――是和否 retrycancel――重試和取消
(4)messageboxicon:對話框中顯示的圖標樣式,默認不顯示任何圖標。
question――問號 information、asterisk――i號 error、stop、hand――錯誤號 warning、exclamation――!號 none――不顯示任何圖標
(5)messageboxdefaultbuttons:可選項,對話框中默認選中的按鈕設置。
defaultbutton1――第1個button是默認按鈕 defaultbutton2――第2個button是默認按鈕 defaultbutton3――第3個button是默認按鈕
7、memcpy(拷貝目的地,拷貝對象,拷貝長度);包含在頭文件#include
函數原型:
extern void *memcpy(void *destin, void *source, unsigned n);功能:
由source指向地址為起始地址的連續n個字節的數據復制到以destin指向地址為起始地址的空間內。eg: int a=5,b=9;memcpy(a,b,sizeof(a));//將b按位拷給a;說明:
1.source和destin所指內存區域不能重疊,函數返回指向destin的指針。2.與strcpy相比,memcpy并不是遇到 主站蜘蛛池模板: 国产好爽…又高潮了毛片| 日本熟妇色xxxxx日本妇| 99久久婷婷国产综合精品青草漫画| 强 暴 疼 哭 处 女 身子视频| 亚洲aⅴ在线无码播放毛片一线天| 亚洲日本va中文字幕人妖| 一区二区三区av波多野结衣| 无码熟妇人妻av| 亚洲人成网站在线播放942| 久激情内射婷内射蜜桃人妖| 日韩亚洲欧美中文高清| 亚洲熟女av乱码在线观看漫画| 亚洲国产精品久久久久婷婷老年| 99久久婷婷国产综合精品青草免费| 台湾佬自拍偷区亚洲综合| 男人和女人做爽爽免费视频| www一区二区www免费| 伊人99综合精品视频| 蜜桃视频无码区在线观看| 草色噜噜噜av在线观看香蕉| 黑人上司粗大拔不出来电影| 成在人线av无码免费漫画| 日本毛x片免费视频观看视频| 亚洲国产精品成人久久久| 噜噜噜亚洲色成人网站| 伊人久久大香线焦av色| 日本十八禁视频无遮挡| 亚洲一区二区三区尿失禁| 夜夜欢性恔免费视频| 精品国产一区二区三区香蕉| 久久亚洲精品无码观看| 亚洲国产精品无码专区影院| 国产在线精品国自产拍影院同性| 国产男女性潮高清免费网站| 久久18禁高潮出水呻吟娇喘| 顶级欧美做受xxx000| 亚洲最大av无码国产| 亚洲精品成人片在线观看| 一本一道波多野结衣av中文| 亚洲色大成网站www在线| 成人精品av一区二区三区网站|