C_WINAPI学习笔记

6 篇文章 0 订阅

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值