1打开对话框
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), NULL, Main_Proc);
打开模态对话
对话框的STYLE:DS_MODALFRAME | WS_POP
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE);
//hWnd为父对话框,即调用DialogBoxParam的对话框,该对话框会被禁止
//retCode 为EndDialog(hwnd, returnCode)中的returnCode
int retCode = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG_ADDMM), hWnd, AddMember_Proc,(LPARAM)&curMember);
二、控件学习
ListView
1获取ListView的Item文本
不要设置subitem项,则获取item的文本。存至itemTextbuff
LVITEM LvItem;
memset(&LvItem,0,sizeof(LvItem));
LvItem.mask=LVIF_TEXT;
//LvItem.iSubItem=3;
LvItem.pszText=itemTextbuff;
LvItem.cchTextMax=256;
LvItem.iItem=iSelected;
SendMessage(hList,LVM_GETITEMTEXT, iSelected, (LPARAM)&LvItem);
2获取ListView的subitem的文本
设置subitem项和相应的buffer
获得subitem为3的文本,存至subitemTextbuff
LvItem.iSubItem=3;
LvItem.pszText=subitemTextbuff;
3全选列表,-1表示全选,注释中的宏ListView_SetItemState与其上面的五行代码等价
宏ListView_SetItemState的定义
#define LVM_SETITEMSTATE (LVM_FIRST + 43)
#define ListView_SetItemState(hwndLV, i, data, mask) \
{ LV_ITEM _ms_lvi;\
_ms_lvi.stateMask = mask;\
_ms_lvi.state = data;\
SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)i, (LPARAM)(LV_ITEM FAR *)&_ms_lvi);\
}
4插入listview
插入item:LVM_INSERTITEM
LVITEM lvItem;
memset(&lvItem,0,sizeof(LvItem));
lvItem.mask = LVIF_TEXT;
lvItem.iSubItem = 0;
lvItem.pszText = sMemInfo[i].curCard;
SendDlgItemMessage(hwnd,IDC_LIST_MEMBER,LVM_INSERTITEM,0,(LPARAM)&lvItem);
插入subitem:LVM_SETITEM
lvItem.iSubItem = 1;
lvItem.pszText = sMemInfo[i].curName;
SendDlgItemMessage(hwnd,IDC_LIST_MEMBER,LVM_SETITEM,0,(LPARAM)&lvItem);
CheckBox RadioBox
5RadioBox分组
将一个RadioBox控件的STYLE设置为WS_GROUP,其Tab序后面的控件与其一组
6选择CheckBox、RadioBox及判断状态
选择CheckBox、RadioBox
CheckDlgButton(hwnd,IDC_CHECK_HASLOCKED,BST_CHECKED);
CheckDlgButton(hwnd,IDC_RADIO_NORMALSE,BST_CHECKED);
选择RadioBox
参数:窗口句柄,组内Tab序第一个控件ID,组内Tab最后一个控件ID,待选控件ID
CheckRadioButton(hwnd,IDC_RADIO_NORMALSE,IDC_RADIO_OTHERSE,IDC_RADIO_NORMALSE);
判断状态
if(IsDlgButtonChecked(hwnd,IDC_RADIO_NORMALSE))
{
MessageBox(hwnd,NULL, "R1 is checked",MB_OK);
}
if(IsDlgButtonChecked(hwnd,IDC_CHECK_HASLOCKED))
{
MessageBox(hwnd,NULL, "C1 is checked",MB_OK);
}
ListBox
设置列宽
int columns[] = { 20,30 };
ListBox_SetTabStops(hList, 3, &columns); //三列,第一列列宽为20,第二列列宽为30,最后是第三列,可用\t分列,如:AA\tBB\tCC
获得,添加和删除Item,设置选中。没有查找,查找需要循环进行字符串比较查找。
indexLB = SendDlgItemMessage(hwnd,IDC_LIST_BOX,LB_ADDSTRING,itemdata,(LPARAM)buff); //添加,成功则返回item的index
SendDlgItemMessage(hwnd,IDC_LIST_BOX,LB_GETTEXT,indexLB,(LPARAM)buff); //获得指定index的item的值
SendDlgItemMessage(hwnd,IDC_LIST_BOX,LB_SETCURSEL,indexLB,0); //选中指定index的item
SendDlgItemMessage(hwnd,IDC_LIST_BOX,LB_DELETESTRING,indexLB,NULL); // 按index删除item
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775146%28v=vs.85%29.aspx
GetItemData说明
ListBox_SetItemData()这个函数是用来为每个已存在的Item配置一个32位(也就是一个int)大小的关联数据,这个关联数据可以是一个索引,id之类,以方便根据索引找到其他相关数据
ListBox_GetItemData()相反
http://wenwen.sogou.com/z/q408039053.htm
http://msdn.microsoft.com/en-us/library/windows/desktop/bb774735%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775947%28v=vs.85%29.aspx#radio_buttons
http://msdn.microsoft.com/en-us/library/windows/desktop/ff485884%28v=vs.85%29.aspx