我有一个基于对话框的界面。当前上面有一个EDIT,三个Button,想让整个操作过程中都不要焦点(比如,当鼠标按在某个按钮上的时候在EDIT中输入某些数据,但不要焦点在这个button上。当鼠标点击在EDIT中的时候,也不要有一个焦点提示输入。没有明白的大侠可以打开微软拼音输入的软键盘看看,他就是整个操作过程没有焦点的)。请问如何实现?
谢谢大家!

解决方案 »

  1.   

    TO:  happyparrot(快乐鹦鹉)
    具体一点啊。
    这个控件如何做?
      

  2.   

    试试通过控制光标的闪烁速度。。(即设置闪烁间隔时间足够长)在程序结束后,记得恢复光标速度UINT uiOldTime, uiNewTime;
    uiOldTime = GetCaretBlinkTime();
    ....SetCaretBlinkTime(uiNewTime);
    在关闭程序时,设置会系统光标速度
    SetCaretBlinkTime(uiOldTime);
      

  3.   

    TO: lixiaosan(小三)
    这样程序替换到别的界面会出问题吗?
      

  4.   

    响应按钮的OnClick,最后调用隐藏按钮的SetFocus()
    响应edit控件的OnChange,最后调用隐藏按钮的SetFocus()
    总之,最后都将焦点设置到隐藏按钮上。隐藏按钮不可见。
      

  5.   

    会影响到其他程序,因为这个是api是设置系统的光标闪烁速度
      

  6.   

    你可以判断当前界面为顶层界面时才SetCaretBlinkTime
      

  7.   

    GetForegroundWindow()
    你可以弄个定时器Timer,判断是否你的dlg为桌面上的顶层窗口,是才设定新的时间间隔
    Cxxxdlg::OnTimer(....)
    {
        if( GetForegroundWindow() == this.m_hWnd)
             SetCaretBlinkTime(uiNewTime);
        else
             SetCaretBlinkTime(uiOldTime);  .....
       
    }
      

  8.   

    if( GetForegroundWindow() == this->m_hWnd)
      

  9.   

    TO: happyparrot(快乐鹦鹉)
    这个方法我也试过,点击一个按钮后,然后用隐藏按钮的SetFocus(),这样就要对每个按钮处理。如果按钮多的话就不好处理了吧?
    有没有更好的办法?
      

  10.   

    TO:  lixiaosan(小三) 
    这样替换到别的程序光标闪烁还是我们设置的,好像又要切换回去了。
      

  11.   


    TO: lixiaosan(小三)
    这样替换到别的程序光标闪烁还是我们设置的,好像又要切换回去了。
    ===================================你的疑问,我上面已有解答
      

  12.   

    那就是想办法截获WM_SETFOCUS消息,不过我也不知道怎么才能截获
      

  13.   

    TO:  BOYGUARD110(BOYGUARD110) 没有明白。具体如何来作,给些提示!有没有更好一点的办法呢?
      

  14.   

    比如,自画按钮 彩色按钮源代码 详细信息 < 按钮 >  
    [代码性质] VC可重用代码段
    [代码作者] Bob Ryan
    [文件大小] 2K 
    [更新日期] 2002-3-9 12:06:00 
    [下载次数] 7740  http://www.vckbase.net/code/listcode.asp?mclsid=3&sclsid=&page=27
     
     其中的自画部分如下: 看作者的注释知道 当if (state & ODS_FOCUS) 的时候 是可以把虚线画出来表示此时拥有焦点,那么你可以不画,不就没了 EDIT窗口你再找找相关的源代码,应该会有些线索, 
    void CColorButton::DrawItem(LPDRAWITEMSTRUCT lpDIS)
    {
      //
      // Now, depending upon the state, redraw the button (down image) if it is selected,
      // place a focus rectangle on it, or redisplay the caption if it is disabled
      //
        if (state & ODS_FOCUS) 
         {
           DrawFocusRect(lpDIS->hDC, (LPRECT)&focusRect);
            if (state & ODS_SELECTED){ 
         DrawFilledRect(pDC, btnRect, GetBGColor()); 
         DrawFrame(pDC, btnRect, -1);
       DrawButtonText(pDC, btnRect, buffer, GetFGColor());
    DrawFocusRect(lpDIS->hDC, (LPRECT)&focusRect);
    }
    }
     
        }
    }
      

  15.   

    KAO,CSDN又搞了一个什么狗屁名堂?结贴都结不了,给分都没有办法给!
    结贴给完分后提示: 贴子回复次数大于跟给分次数 
    什么东东啊?
    如何才能结贴呢?