s_Edit_name = CreateWindow(
TEXT("Edit"),
TEXT(""),
WS_CHILD|WS_BORDER,
375, 
90,
240,
40,
g_hWnd,
NULL,
g_hInst,
NULL
);创建了个编辑框,现在的情况是一个窗口里有多个编辑框,我画了个按键,如果点这个按键就可以清空当前编辑框中的内容。
现在问题来了:我要判断当前输入光标是在哪个编辑框中,当我把光标焦点至于用s_Edit_name编辑框中时用代码if(GetFocus()==s_Edit_name)来判断,竟然不相等,请问大家有没有更好的办法。win32Cvc

解决方案 »

  1.   

    CWnd *wnd = GetFocus();
    你比较wnd的句柄和m_edit的句柄就好了。因为wnd是一个临时变量,它指向的肯定不是m_editTime这个成员变量,wnd只是Attch了句柄而已。 CWnd *wnd = GetFocus(); 
    if ( wnd->m_hWnd == m_edit.m_hWnd)   
          {    }
      

  2.   

    cwnd是mfc下的类吧,我用的事win32编程,编译报错cwnd未定义
      

  3.   

    s_Edit_name = CreateWindow( 
    怎么没有 控件 ID ?
    原来那个 menu 现在应该给个 IDC_EDIT_NAME (如 2000)   
      

  4.   

    s_Edit_name = CreateWindow(
    TEXT("Edit"),
    TEXT(""),
    WS_CHILD|WS_BORDER,
    375, 
    90,
    240,
    40,
    g_hWnd,
    (HMENU)ID_EDIT_NAME,
    g_hInst,
    NULL
    );指定了id后该怎么做呢
      

  5.   

    "if(GetFocus()==s_Edit_name)" 放哪里了 ?
      

  6.   

    放在按键的事件响应中,点击按键就会执行if(GetFocus()==s_Edit_name)
      

  7.   

    你用对象去和GetFocus()比较自然出问题的,这个函数返回的是句柄类型,函数原型:HWND GetFocus(void);
    所以你需要为控件定义句柄,然后再进行比较啦,其实呢MSDN讲的很详细的。
      

  8.   

    不要管焦点 ,找到所有 edit (GetDlgItem),setwindowtext("");
      

  9.   

    很直接,平时就这样做,不过lz是要让获取焦点的edit为空,不知道为嘛这么做...
      

  10.   

    "之所以要找这个焦点是因为一个窗口里有很多的编辑框"你在按钮的 WM_SETFOCUS;里把 hOldWnd 记录下来,那个就是点击前有焦点的控件。“当windows将输入焦点从一个窗口转换到另一个窗口时,它首先给正在失去焦点的窗口发一个WM_KILLFOCUS消息,wParam参数是接收输入焦点的窗口的句柄,然后window向正在接收输入焦点的窗口发送一个WM_SETFOCUS消息,同时wParam是还在失去输入焦点的窗口的句柄,(WPARAM为NULL表示没有窗口拥有或正在接收输入焦点)”
      

  11.   

    在WndProc里记录焦点事件,记录当前焦点在那个edit里。清空的时候就可以直接用了。
      

  12.   

    难得啊,现在还有人愿意费事用SDK做东西。
      

  13.   

    这个项目之前是公司外包出去的,完全用win32写的,结果做了一半搞不下去 了,现在要我来继续搞了
      

  14.   

    现在这个代码问题百出,我都想用mfc重写了
      

  15.   

    其实我不明白为什么要那个按钮,
    本来 在 edit 的 WM_SETFOCUS 就可以 把 有焦点的Edit内容去除。
      

  16.   

    在窗口过程添加了setfoucus消息,怎么区别是那个编辑框呢?
      

  17.   

    edit 多的话 ,最好 派生
      

  18.   

    “edit 多的话 ,最好 派生”
    sdk 就是 子类化。
    WM_SETFOCUS 时 
    wParam 
    A handle to the window that has lost the keyboard focus. This parameter can be NULL. lParam 
    This parameter is not used. hWnd 就是 要得到 焦点的 控件。