C語言也能幹大事第八節(如鵬基礎)

實現“自己動手寫計算器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;

}


發佈了28 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章