實現“自己動手寫計算器2.0版”,允許選擇運算符號。
ComboBox的操作
添加項:ComboBox_Inserstring(hwndcombo,-1,””) -1表示每次加的都放到最後面。
(1)添加項:
填入Combo最簡單的方法是藉助ComboBox_AddString“函數”(其實是宏):
ComboBox_AddString(hwndCtrl,str)
每個控件也有自己的句柄。句柄是WINDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例、窗口、圖片、圖標等等。控件句柄和控件id的區別:控件句柄在每次運行的時候都是不一樣的,而控件id則是確定的。ComboBox_AddString等幾乎所有控件函數都可以對整個Windows中的控件進行控制(有的遊戲外掛的原理),在一個對話框內id不能重複,但是在不同的對話框內則可以重複,因此需要一個全局的不重複的句柄來表示控件,通過對話框+id聯合確定。兩個不同的程序(哪怕是同一個程序啓動的兩個不同的實例,開兩個記事本)是找到我爸,然後找我父親的id=1的兒子,也就是我,然後再打我。這就是通過我父親的把柄和我的id=1來定義我
GetDlgItem由對話框句柄+id得到控件的句柄。
Main_OnInitDialog對話框初始化的時候被調用。
做一個例子
(2)確定目前選項的索引:
int ComboBox_GetCurSel(HWND hwndCtl; Cur:CurrentSel:Selection返回值是當前項的編號,從0開始。得到的不是“北京市”這樣的字符串,而是索引(編號)如果沒有項目被選中,那麼從函數中傳回的iIndex值爲CB_ERR。做一個例子
(3)刪除項:
int ComboBox_DeleteString(HWND hwndCtl, int index);
做一個例子
(4)取得有多少項:
int ComboBox_GetCount( HWND hwndCtl);返回值是個數
(5)選定某一項
int ComboBox_SetCurSel( HWND hwndCtl, int index);將index設定爲-1則取消所有選擇.
(6)得到某項的值
int ComboBox_GetLBText( HWND hwndCtl, int index, LPCTSTR lpszBuffer);
怎麼讓Combo不能改?類型:下拉列表
更多ComboBox的用法
http://msdn.microsoft.com/en-us/library/cc656426(VS.85).aspx
是宏,不是函數。SendDlgItemMessage/SendMessage。
額外知識,不講,自學(不想變成填鴨式教育,課上只講思想性的東西,會給大家學習資料,希望大家培養自學能力)
增:ListBox(和Combo類似)
(1)添加項:
如果採用LBS_SORT樣式,那麼填入清單方塊最簡單的方法是藉助ListBox_AddString:int ListBox_AddString(HWND hwndCtl, LPCSTR lpsz);
如果沒有采用LBS_SORT,那麼可以使用ListBox_InsertString指定一個索引值,將字符串插入到清單方塊中:int ListBox_InsertString(HWND hwndCtl, int index, LPCSTR lpsz);
(2)刪除項:
int ListBox_DeleteString(HWND hwndCtl, int index);
(3)取得有多少項:
int ListBox_GetCount( HWND hwndCtl);
(4)選定某一項
int ListBox_SetCurSel(HWND hwndCtl, int index);將iParam設定爲-1則取消所有選擇。
(5)確定目前選項的索引:int ListBox_GetCurSel( HWND hwndCtl); 如果沒有項目被選中,那麼從呼叫中傳回的iIndex值爲LB_ERR。(6)將某項目複製到文字緩衝區中:int ListBox_GetText(HWND hwndCtl, int index, LPCTSTR lpszBuffer);
實現四則運算器:
作業
(1)給本節課的小練習提改進建議並且自己實現。
(2)學生管理系統(畫原型界面佈置)增、刪、查(雙擊)、搜
雙擊代碼:
case IDC_LIST:
{
switch(codeNotify)
{
case LBN_DBLCLK://雙擊選中項
{
MessageBox(hwnd,TEXT("雙擊"),TEXT("成功"),MB_OK);
}
break;
}
}
break;
check控件代碼:
switch(id)
{
case IDC_OK:
{
HWND hwndcheck=GetDlgItem(hwnd,IDC_CHECK);
int check=Button_GetCheck(hwndcheck);
if(check==BST_CHECKED)
{
MessageBox(hwnd,TEXT("選中"),TEXT(""),MB_OK);
}
if(check==BST_UNCHECKED)
{
MessageBox(hwnd,TEXT("未選中"),TEXT(""),MB_OK);
}
}
break;
case IDC_BUTTON1:
{
HWND hwndcheck=GetDlgItem(hwnd,IDC_CHECK);
int check=Button_GetCheck(hwndcheck);
if(check==BST_CHECKED)
{
Button_SetCheck(hwndcheck,BST_UNCHECKED);
}
if(check==BST_UNCHECKED)
{
Button_SetCheck(hwndcheck,BST_CHECKED);
}
}
break;
default:
break;
}