hur.cn - 华软网

 热门搜索

[请教]为什么MFC中调用API函数获取EditText控件内容失败

  作者:未知    来源:网络    更新时间:2011/6/10

通过MFC Dialog建立对话框程序,然后在对话框加入了一个EditText控件,假如ID为1000,还有一个按钮。
点击想获取EditText的内容, 代码如下:

C++">void CxkeyDlg::OnBnClicked_GetWndInfo()
{


WCHAR szWndCaption[MAX_PATH];
HWND hCaptionTextCtrl;

hCaptionTextCtrl = ::GetDlgItem(NULL, IDC_EDIT_CAPTION);

if (hCaptionTextCtrl)
{
::SendMessage(hCaptionTextCtrl, WM_GETTEXT, (WPARAM)(MAX_PATH*2), (LPARAM)(szWndCaption));
AfxMessageBox(szWndCaption);
}
}

但是却失败了,不知道是哪里出错?
对话框的句柄我直接用的NULL,不知道是不是这里,如何获取对话框句柄呢?

---华软 网友回答---
引用楼主 nine8 的回复:
通过MFC Dialog建立对话框程序,然后在对话框加入了一个EditText控件,假如ID为1000,还有一个按钮。
点击想获取EditText的内容, 代码如下:

C/C++ code
void CxkeyDlg::OnBnClicked_GetWndInfo()
{

    
    WCHAR        szWndCaption[MAX_PATH];
    HWND   ……

如果是本对话框的HWND 传递  m_hWnd / GetSafeHwnd   其他对话框 用FindWindow之类的API获取
---华软网友回复---
对话框的句柄我直接用的NULL,不知道是不是这里,如何获取对话框句柄呢?
=============
不用句柄的,直接用CWnd::GetDlgItem,不用API就行了。
改成:hCaptionTextCtrl = GetDlgItem(IDC_EDIT_CAPTION);

---华软网友回复---
谢谢楼上俩位的朋友指点。按照你们提供的方法已经可以了,非常感谢!
初学MFC好多都还不懂,谢谢大家指点!
结贴给分!
---华软网友回复---
引用 2 楼 wltg2001 的回复:
对话框的句柄我直接用的NULL,不知道是不是这里,如何获取对话框句柄呢?
=============
不用句柄的,直接用CWnd::GetDlgItem,不用API就行了。
改成:hCaptionTextCtrl = GetDlgItem(IDC_EDIT_CAPTION);


这样的话hCaptionTextCtrl要声明成什么类型呢?
看提示是 CWnd * ? 然后我掉::SendMessage,强制转换成(HWND)吗?之前试了好像不行,不知道是我哪里搞错了
---华软网友回复---
引用 4 楼 nine8 的回复:
引用 2 楼 wltg2001 的回复:

对话框的句柄我直接用的NULL,不知道是不是这里,如何获取对话框句柄呢?
=============
不用句柄的,直接用CWnd::GetDlgItem,不用API就行了。
改成:hCaptionTextCtrl = GetDlgItem(IDC_EDIT_CAPTION);


这样的话hCaptionTextCtrl要声明成什么类型……


返回的是CWnd * ,::SendMessage中hHwnd参数可以这样获得:pWndCaptionTextCtrl->GetSafeHwnd()
---华软网友回复---
原来如此,谢谢指点      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。