问题描述:1.首先我想移动一个Combox的位置(最终目标)
2.出现的情况,当时的情况是这样的:我的Combox中的Edit已经显示了字符,比如‘ a ’,当我使用MoveWindow移动后,a
   出现了底色(蓝色)我的解决方案:1.首先GetCel(),记下这个值,然后移动后重新SetCel()进去...但是这样在移动的过程中会出现一次蓝色底色的闪烁我的疑问:大虾们,谁有更好的方案解决这个问题?拜谢.....

解决方案 »

  1.   

    重载一下,ComboBox的得到焦点函数。即可。
    ComboBox的得到焦点后会全选编辑框中的内容。
      

  2.   


    只是做了个demo,看到这种现象
      

  3.   


    其实我也是刚学VC
    嗯,你可以把SetCurSel的设定写在得到焦点事件里。看会不会好。
    不行的话就把控件了类化。子类化我也不太熟不好意思昂我只会这些了
      

  4.   

    我试了一下移动组合框,但没有出现你说的那种情况,我的VC6,你的呢?void CCSDN025Dlg::OnButton1() 
    {
    CComboBox *pCom;
    pCom=(CComboBox *)GetDlgItem(IDC_COMBO1);
    pCom->SetWindowPos(NULL, 1,10, 100, 60, SWP_NOZORDER|SWP_NOSIZE);
    }
      

  5.   

    你使用鼠标拖动来移动控件,还是直接MoveWindow/SetWindowPos来设置?
      

  6.   


    我使用的是MoveWindow移动的控件,就是在一个BUtton事件中:
    LRESULT OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
    {
    ::MoveWindow(GetDlgItem(IDC_COMBOX), 30, 30, 100, 150, NULL);
    // m_btnCombox.SetCurSel(0);
    return 0;
    }