windows日常学习(四)

学了一天,敲了代码,改了一天,真心体会到了写简单,改代码真费劲。
今天的收获如下,希望对大家有帮助。
1、PaintWindow
2、通过给Windows发送-一个BM_ SETSTATE消息,可以模拟按键按钮的状态变化。
下面的语句将导致按钮看上去被按一样:SendMessage (hwndButton, BM_ SETSTATE,1, 0);
调用下面的函数则会让按钮回到正常状态:SendMessage (hwndButton, BM_ SETSTATE,0, 0);窗口句柄hwndButton是CreateWindow调用的返回值。
3、

switch(LOWORD(wParam))
{
     case  IDC_BLACK:
     case  IDC_ RED:
     case  IDC _GREEN:
     case  IDC_ YELLOW:
     case  IDC_ BLUE:
     case   IDC_ MAGENTA:
     case  IDC_ CYAN:
     case   IDC_ _WHITE:
     icolor = LOWORD (wParam) ;
     for (i = IDC_ BLACK,i <= IDC. WHITE, i++)
     SendMessage (GetDlgItem (hDlg, i), BM_ SETCHECK,i == LOWORD (WParam), 0);
      return TRUE; 
}

将选中的颜色值存在iColor中,添加一个关于颜色值的循环。程序获取了这8哥单选按钮控制的窗口句柄,并用SendMessage向每一个句柄发送了一条BM_SETCHECK消息。只有对向对话框窗口过程发送WM_COMMAND消息的按钮,消息的wParam值才设为1。
第一种捷径是特殊的对话框过程sendDlgItemMessage:
SendDlgItemMessage (hDlg, id, iMsg,wParam, 1Param) ;
它等价于SendMessage (GetD1gItem(hD1g,iMsg ),id, WParam, 1Param) ;
现在,程序循环如下所示:
for (i = IDC_ BLACK,i <= IDC WHITE i++)
SendDlgItemMessage (hD1g, i, BM_ SETCHECK, i == LWORD (wParam),0);
更有甚者:CheckRadioButton函数时

	    CheckRadioButton(hDlg, idFirst, idLast, idCheck);

这个函数只选中ID值是idCheck的单选按钮,其他从ID值是idFirst到idIast的单选按钮都被取消选中。这要求ID值必须是顺序排列的。现在我们可以彻底摆脱循环并使用:

4、按钮的默认ID值是IDOK。

5、对话框过程不需要处理WM_PAINT和WM_DESTROY消息,它也不会收到WM_CREATE消息。然而它会处理一条专门的WM_INITDIALOG消息时进行初始化。
WM_INITDIALOG是对话框接收的第一条消息,这条消息只发送给对话框过程。另外,在处理WM_INITDIALOG时,对话框过程也可以调用setfocus函数来设置焦点所在的子窗口控件,同时返回FALSE.
除以上消息外,对话框过程只处理WM_COMMAND。当鼠标单机按钮控件或者当焦点在按钮控件时按下空格键,按钮控件就会向父类窗口发送WM_COMMAND。该消息的wParam参数的低位字时控件的ID(在对话框模板中被设定为IDOK).

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值