mfc 控制項使用的一些小問題

2021-06-16 06:45:02 字數 4082 閱讀 4101

一、關於spin控制項按鈕上下增加數出現想反的情況

spin 控制項設定屬性 auto buddy  和 set buddy integer 之後就會與最近的edit控制項自動關聯

然而會出現按上箭頭減少,下箭頭數增加的情況

解決該問題方法是: 呼叫 setrange() 函式 就ok了

((cspinbuttonctrl *)getdlgitem(idc_spin))->setrange(0, 100);

二、用函式獲取控制項checkbox 按鈕的選定狀態,用getcheck函式出錯

正確呼叫 :

int  check = ((cbutton *)getdlgitem( idc_check)) -> getcheck();  就ok了

check 的值 可能為 0 、1 、2;

三、樹形控制項 ctreeviewctrl

//新增父項和子項

//treectrl const int deptcount = 4;

cstring compname = _t("父項");

cstring treeheader[deptcount] = ;

htreeitem htreeitem[deptcount];

htreeitem hcomp;

hcomp = m_tree.insertitem( compname );

for (i = 0; i < deptcount; ++i)

獲取每個子項的值

htreeitem selitem;

selitem = m_tree.getselecteditem(); //所選擇的項

dword w = m_tree.getitemdata( selitem ); //w為20為子項1 21為子項2

為樹形控制項新增圖示

m_imgtree.create(16, 16, ilc_color4 | ilc_mask, 4, 1);

m_tree.setimagelist( &m_imgtree, tvsil_normal );

insertnodetotree( tvi_root, cdepttree::getinstance().getdept(0) );

m_tree.expand( m_tree.getrootitem(), tve_expand );

htreeitem hchild = m_tree.getnextitem( m_tree.getrootitem(), tvgn_child );

if (hchild)

else

m_hactive = m_tree.getrootitem();

四、c******* 工具條的建立和圖示的新增

//*******

m_*******.createex(this, tbstyle_flat, ws_child | ws_visible | cbrs_align_top | cbrs_align_any /*| ccs_nodivider */ | cbrs_tooltips  ); 

m_*******.load*******( idr_******* ); 

//工具條資源id

uint id = ;

m_*******.setbuttons( id, sizeof(id)/sizeof(uint) );

m_*******.setbuttontext(0, _t("儲存")); 

m_*******.setbuttontext(1, _t("取消"));

m_imagelist.create(16, 16, ilc_color24|ilc_mask, 4, 1); 

//圖示大小,顏色值,初始化個數為4,預設增加數為1

//載入圖示資源 

m_*******.get*******ctrl().setimagelist( &m_imagelist);

m_*******.get*******ctrl().setbuttonsize( csize( button_width, *******_height ) ); 

//設定工具條寬度和高度(常量)

m_*******.setwindowpos(null, 0, 0, 0, 0, swp_nosize | swp_showwindow );     

//設定工具條放置的位置

repositionbars(afx_idw_controlbar_first, afx_idw_controlbar_last, 0);    //顯示工具條

五、時間控制項 datetimepickerctrl

ctime t1 , t2;

用ctimespan   ts=t1-t2;函式,得到兩個時間的相差天數

//設定時間控制項顯示格式00:00 ((cdatetimectrl *)getdlgitem( idc_datetimepicker ))->setformat(_t("hh:mm"));

可用classwizard 為控制項設定兩個變數 control  and  value type

設定控制項的初始值

coledatetime time; 

cstring strtime ; 

strtime.format( _t("%s:00"), m_pclass->getontime() ); 

if ( time.parsedatetime( strtime ) )

((cdatetimectrl *)getdlgitem( idc_datetimepicker_onwork ))->settime( time );

//設定控制項時間日期的範圍

coledatetime t = coledatetime::getcurrenttime(); 

coledatetime t1 = coledatetime(t.getyear()-50, 1, 1, 0, 0, 0);

coledatetime t2 = coledatetime(t.getyear()+50, 12, getdaysofmonth( t.getyear()+50, 12), 23, 59, 59 );

((cdatetimectrl*)getdlgitem(idc_datetimepicker_ow_sd))->setrange( &t1, &t2 ); 

((cdatetimectrl*)getdlgitem(idc_datetimepicker_ow_ed))->setrange( &t1, &t2 );

六、listctrl 控制項

m_listctrl.deleteitem(nindex); 

delete pover;  

int items = m_listctrl.getitemcount();  

nindex = nindex == items? items-1:nindex; 

m_listctrl.setfocus();

m_listctrl.setitemstate(nindex,lvis_selected | lvis_focused, lvis_selected | lvis_focused); 

m_listctrl.ensurevisible(nindex, false);

七、手動新增狀態列
#define ids_string_operator_name 1

#define ids_indicator_time 2

#define ids_indicator_reserve1 3

#define ids_indicator_reserve2 4

#define ids_indicator_reserve3 5

static uint indicators =

;

//載入狀態列

一些小問題

1 曼徹斯特編碼和差分曼徹斯特編碼。曼徹斯特編碼,常用於區域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘訊號,又作資料訊號 從高到低跳變表示 1 從低到高跳變表示 0 還有一種是差分曼徹斯特編碼,每位中間的跳變僅提供時鐘定時,而用每位開始時有無跳變表示 0 或 1 有跳變為 ...

一些小問題

問1 子類繼承了父類的所有成員,對嗎?答1 錯,至少子類沒有繼承父類的建構函式 析構函式不知有沒有繼承,但複製建構函式肯定是繼承了 class a a intx a const a a a operator const a a class b public a intmain view code 問...

一些小問題

最近使用win10出現了很多問題,簡單總結一二。第一,剛建登陸使用者時,使用者名稱搞成了中文的,於是乎eclipse中 總是報錯,想改名發現改不了,必須先將家庭版公升級為專業版才可以建立乙個admin許可權的賬戶登入,然後修改c users 張三中的張三為英文。第二,我的電腦不在桌面上,進去麻煩,要...