大姐,你用错函数了吧,这个函数得到当前编辑框中,高亮内容的函数,应该用GetWindowsText()

解决方案 »

  1.   

    你首先要判断输入焦点是否是该编辑控件后才能这样去判断
    这个CXXXWnd是CEdit的宿主窗口
    BOOL CXXXXWnd::IsEditFocus(CWnd* pWnd)
    {
        ASSERT( pWnd != NULL );
        HWND hWnd = pWnd->GetSafeHwnd();
        if (hWnd == NULL)
    return FALSE;    TCHAR szClassName[6];
        return ::GetClassName(hWnd, szClassName, 6) &&
                 _tcsicmp(szClassName, _T("Edit")) == 0;
    }void CXXXWnd::OnEditCopy() 
    {
    // TODO: Add your command handler code here
             CEdit* pEdit = (CEdit*)GetFocus();
    ASSERT(pEdit);
    ASSERT_VALID(pEdit);
    pEdit->Copy();

    }
    当然还要添加消息映射.void CXXXWnd::OnUpdateEditCopy(CCmdUI* pCmdUI) 
    {
    // TODO: Add your command update UI handler code here
    CWnd* pWnd = GetFocus();
        if (NULL == pWnd || !IsEditFocus( pWnd ))
        {
             pCmdUI->Enable( FALSE );
        }
        else
        {
             CEdit* pEdit = (CEdit*)pWnd;
             int nBeg, nEnd;         pEdit->GetSel( nBeg, nEnd );
             pCmdUI->Enable( nBeg != nEnd );
        }
    }
      

  2.   

    我的程序是基于对话框的。我在OnUpdateEditCopy()里设置了一个断点,发现只有当点击edit->copy时,程序才会响应OnUpdateEditCopy()。而不是按照预想的那样,在copy菜单项显示的时候就相应该函数。所以问题可能出在程序对消息的响应位置上,可是我不知道基于对话框的程序中的相应顺序是什么样的。
      

  3.   

    对话框中使用UPDATE_COMMAND_UI需要额外的代码,参见
    http://www.csdn.net/develop/read_article.asp?id=9490
      

  4.   

    可是并没有WM_KICKIDLE消息啊。怎么映射?
      

  5.   

    这个是MFC内部消息,需要自己添加映射函数。
      

  6.   

    给我写email吧
    [email protected]
    《在mfc经典问答》里面有这个问题,我可以把源代码给你:)