斗地主代码分析第一天之启动对话框的创建(下)

2.3.3 水平滑动条的设置

通过水平滑动条可以选择不同的头像。

(1)滑动条控件对象的添加

为滑动条控件添加类别为“Control”的变量,变量名为m_ctlSBFace。

(2)滑动条范围的设置

在对话框类的OnInitDialog()函数中,通过m_ctlSBFace设置滑动条的范围。

m_ctlSBFace.SetScrollRange(0, 3);

其中,0表示滑动条的起始值,3表示结束值。因为导入了4个头像位图,所以范围设置为0~3。

(3)WM_HSCROLL消息的响应

用户可以通过水平滑动条来选择不同的头像。因此,需要添加对话框对WM_HSCROLL消息的响应OnHScroll()函数,即按下水平滑动条按键时,要调用的函数。

当用户按下水平滑动条的左侧按键或者右侧按键时,在OnHScroll()函数中主要完成两个功能:一是将滑块向左或者向右移动,二是根据滑块的位置显示不同的头像。

在OnHScroll()函数中通过int类型的变量scrollpos_current来表示滑动条滑块的位置。首先获取滑块的当前位置:

scrollpos_current = m_ctlSBFace.GetScrollPos();

其中,m_ctlSBFace是滑动条添加的变量。

接下来判断用户点击了滑动条的左侧按键还是右侧按键,通过OnHScroll()函数的参数nSBCode进行判断

    switch(nSBCode)

    {

    caseSB_LINELEFT:

       if( scrollpos_current>scrollpos_min)

       {

           scrollpos_current--;

       }

       break;

    caseSB_LINERIGHT:

       if(scrollpos_current<scrollpos_max )

       {

           scrollpos_current++;

       }

       break;

    default:

       break;

    }

其中,SB_LINELEFT表示用户点击了左侧按键,SB_LINERIGHT表示用户点击了右侧按键。当用户点击了左侧按键,则滑块的当前位置值减1,当用户点击了右侧按键,则滑块的当前位置加1;scrollpos_min和scrollpos_max表示滑块位置的最大值和最小值,在每次对scrollpos_current进行操作时,需要保证其在scrollpos_min和scrollpos_max的范围之内。

在确定了滑块的位置之后,接下来通过该位置在头像位图控件中显示不同的头像。

switch(scrollpos_current)

    {

    case 0:

       m_ctlFace.SetBitmap(m_hBmp0);

       break;

    case 1:

       m_ctlFace.SetBitmap(m_hBmp1);

       break;

    case 2:

       m_ctlFace.SetBitmap(m_hBmp2);

       break;

    case 3:

       m_ctlFace.SetBitmap(m_hBmp3);

       break;

    }

其中,scrollpos_current表示滑块的当前位置;m_ctlFace是滑块控件的变量,m_hBmp0~m_hBmp3是导入头像位图的句柄。如图2-7所示。


图2-7 玩家头像的选择

2.3.4 昵称编辑框控件的设置

为昵称编辑框控件添加一个类别为“Value”的变量,变量名为m_strName,用于保存玩家的姓名。

2.3.5 “按键”按键BN_CLICKED消息的响应

为“确定”添加BN_CLICKED消息添加响应函数OnBnClickedOk(),在该函数中,获取用户选择的头像和输入的昵称。

(1)用户选择头像的获取

获取用户选择的头像,实际上就是获取用户选择头像的ID。为水平滑动条添加类别为“Value”的变量m_iFaceID,表示用户选择头像的索引。

(2)用户设置昵称的获取

通过UpdateData()函数获取昵称,代码如下:

UpdateData(TRUE);

通过以上代码,用户设置的昵称保存在m_strName中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值