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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章