zoukankan      html  css  js  c++  java
  • 单选按钮的自绘实现

    于6月30写完单选按钮代码,记录如下,可自己在create后通过

    void LoadNoSelBmp(UINT IdNoCheck);//未点击时的图片

    void LoadSelBmp(UINT IdCheck)//点击时的图片

    加载各种图片,GetCheckedRadioButton(IDC_RADIO1, IDC_RADIO2)来自定义单选按钮的群组也就是IDC_RADIO1到IDC_RADIO2为一组单选按钮

    实现方法:

    要实现自绘,可以重载Create,加上

     dwStyle &= ~(0xF);  // remove styles with conflict with group box
     dwStyle |= BS_AUTORADIOBUTTON; // add group box style
     dwStyle |= BS_OWNERDRAW ;

    要保证一组中只有一项是SetCheck(1),可以用遍历方法:

    // 这里的目的是把同组内所有radiobutton设置为unCheck
     // 首先得到check标志
     m_bChecked = (wParam != 0);
     if(m_bChecked)
     {
      CPtrList list;
      list.AddTail((void*)m_hWnd);
      // 得到父窗口句柄
      HWND hWndParent = GetParent()->GetSafeHwnd();
      // 得到控件窗口句柄
      HWND hWnd = GetSafeHwnd();
      while(hWnd)
      {
       // 得到同组内的空间的窗口句柄
       hWnd = ::GetNextDlgGroupItem(hWndParent, hWnd, 0);
       CWnd* pWnd = CWnd::FromHandle(hWnd);
       if(pWnd)
       {
        // 得到控件资源ID
        int nID = pWnd->GetDlgCtrlID();
       }
       // 在list中查找这个句柄是否被查询到过(这里就只有第一个Group的控件)
       POSITION pos = list.Find((void*)hWnd);

       if(pos)
       {
        // 如果找到了这个句柄,那就代表搜索到头了
        hWnd = NULL;
       }
       if(hWnd)
       {
        // 没有搜索完一组,那么就把当前的句柄添加到list中去(目的是为了不让同一控件被发送两次消息)
        list.AddTail((void*)hWnd);
        // 对这个控件发送unChecked的消息
        ::PostMessage(hWnd, WM_UNCHECKED, 0, 0);
       }
      }
      m_radioState = RADIOSTATE_SELECT;
      m_tRadioState = m_radioState;
     }
     else
     {
      // 设置当前为checked
      m_radioState = RADIOSTATE_UNSELECT;
      m_tRadioState = m_radioState;
     }
     InvalidateRect(NULL);
     return 0;

    3.自绘在DrawItem中实现,这里动态加载传入的图片ID

     要动态加载不同的图片,一定要先Detach(),最后再DelectObject

    CDC dc;
     CRect rc;
     dc.Attach(lpDIS->hDC);
     rc = lpDIS->rcItem;
     m_bmpCheck.Detach();
     m_bmpNoCheck.Detach();
     
     m_bmpCheck.LoadBitmapEx(m_IdCheck);
     m_bmpNoCheck.LoadBitmapEx(m_IdNoCheck)

  • 相关阅读:
    1203正规式转换为有穷自动机
    访问本班同学的博客
    0312复利计算3
    操作系统
    0311复利计算2
    0309简单的复利计算
    0302IT行业虽吃香,能完全享受这块“香"的也很难
    12.30递归下降语义分析
    1203正规式转换为有穷自动机
    对10位同学的文法解释和语法树的评论
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693705.html
Copyright © 2011-2022 走看看