MFC中怎样获得句柄?

在MFC 中,自动生成的按钮响应函数中使用GetDlgItem,不需第一个参数,但我在自己写了一个线程函数中,GetDlgItem报错,怎样获得句柄?求指教!

void CMy1128Dlg::OnBnClickedButton1()//按钮响应函数
{
CreateThread( NULL, 0, ThreadFunc, 0, 0, 0 );//线程
//GetDlgItem(IDC_Picture);//在这里不需要第一个参数,能用。
}
DWORD WINAPI ThreadFunc( LPVOID lpParam )//线程函数
{
CWnd *pwnd = GetDlgItem(IDC_Picture);//GetDlgItem在这里不能用,怎样获得句柄?
}

void CMy1128Dlg::OnBnClickedButton1()//按钮响应函数
{
CreateThread( NULL, 0, ThreadFunc, this, 0, 0 );//将对话框指针传入线程函数
//GetDlgItem(IDC_Picture);//在这里不需要第一个参数,能用。
}

DWORD WINAPI ThreadFunc( LPVOID lpParam )//线程函数
{
CMy1128Dlg *pDlg = (CMy1128Dlg *)lpParam;

CWnd *pwnd = pDlg->GetDlgItem(IDC_Picture);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-01-31
void CMy1128Dlg::OnBnClickedButton1()//按钮响应函数
{
CreateThread( NULL, 0, ThreadFunc, this, 0, 0 );//将对话框指针传入线程函数
//GetDlgItem(IDC_Picture);//在这里不需要第一个参数,能用。
}

DWORD WINAPI ThreadFunc( LPVOID lpParam )//线程函数
{
CMy1128Dlg *pDlg = (CMy1128Dlg *)lpParam;

CWnd *pwnd = pDlg->GetDlgItem(IDC_Picture);
}本回答被提问者和网友采纳
第2个回答  2012-12-07
Thread函数中的 LPVOID lpParam 参数.

实际传递是 对话框指针.
强制转换一下就是 对话框指针了.

CMy1128Dlg *pDlg = (CMy1128Dlg*)lpParam;

CWnd *pwnd = pDlg->GetDlgItem(IDC_Picture);

这样
第3个回答  2012-12-07
DWORD WINAPI ThreadFunc( LPVOID lpParam )//线程函数
{

CThread1Dlg *pDlg=(CThread1Dlg *)lpParam;
pDlg->GetDlgItem(IDC_Picture);
return 0;
}
void CThread1Dlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
CreateThread( NULL, 0, ThreadFunc, this, 0, 0 );//线程
//CWnd *pwnd =GetDlgItem(IDC_Picture);//在这里不需要第一个参数,能用。
}
第4个回答  2012-12-07
-.-...把窗口类的指针作为线程函数的参数传递进去。。然后发消息。。不要在线程里直接操作界面元素。。

MFC中怎样获取指定窗口的句柄
获取所在类窗口的句柄:this->m_hwnd1。主窗口的句柄:无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:AfxGetMainWnd()->m_hWnd,如:::SendMessage(AfxGetMainWnd()->m_hWnd , WM_MY_DOSOME , 0 ,(LPARAM)i);在窗口类中this->m_hWnd或者this->GetSafeHwnd()2。子窗口句柄:用Fin...

MFC对话框如何获取窗口的句柄呢?
每个窗口类外使用GetSafeHwnd(),类内使用m_hWnd,获得窗口句柄。对话框也不例外。

mfc 获取按钮句柄
所以只要获得了窗口或者控件的指针 就可以调用成员变量m_hWnd来获取句柄 例如在当前窗口或者控件下操作 就可以直接用this指针 this->m_hWnd 另外 GetSafeHwnd 这个函数也可以试试 具体情况具体分析 具体用法看MSDN吧 记住一点的是 MFC中的消息映射的过程就是通过指针与句柄的映射来实现的 ...

bcb怎样得到resource句柄
通过窗口标题获取窗口句柄 CWnd *pWnd = FindWindow(_T("#32770"), _T("QQ用户登录"));CWnd有个成员函数 HWND GetSafeHwnd( ) const;在对话框类的成员函数里用 HWND hwnd = GetSafeHwnd();得到的hwnd就是句柄了

mfc单文档中如何获取鼠标当前窗口的句柄?
给你2个函数能够搞定.不懂查msdn使用方法.BOOL GetCursorPos(LPPOINT lpPoint );HWND WindowFromPoint(POINT Point );

MFC 从对话框打开文件 然后取得给文件的句柄 应该怎样做
CFileDialog获取的是文件名和路径;通过OpenFile从文件名打开获取文件句柄;创建文件这个没明白你的意思,是需要自动命名还是同名改扩展名 如果是改扩展名,从CFileDialog那里获取CString CFileDialog::GetFileName( ),然后字符串拼接就可以了;如果自动命名,那么通过CString::Format("XXX%d.txt",iIndex);...

mfc单文档中如何获取View视图(CmyView类实例产生的窗口)窗口的句柄?
可以充分利用CSplitterWnd的GetPane函数,比如,在CmylView中去获取CmyView的窗口句柄(假设CmyView在分割的0行0列):CSplitterWnd *ps = (CSplitterWnd *)GetParent();CmyView *pView = (CmyView *)(ps->GetPane(0,0));pView - >m_hWnd即可获得该视图窗体的句柄 ...

关于C++MFC窗口控件句柄获取问题
第一参数必须指定明确的父窗口,如果为NULL,则是获取顶层窗口(即,父窗口为桌面);被查找窗口(控件)必须和第二参数是明确的父子关系,且子窗口不是模态窗口(模态窗口有些特殊,一般不这样获取);子窗口获取可能不是一次成功,如果类似子窗口很多,可能需要判断hwndChildAfter。从你图中代码,无法判断...

关于MFC的句柄问题
"按一个按钮就可以回到主窗口",这个描述太模糊了,MFC下,不同的窗口类型、不同的窗口关系,实现这个功能的方法不一样。比如DoModal的模态对话框,在任何一个按钮响应函数中添加:CDialog::OnOK();这条语句,就可以返回主窗口了。

C#或MFC获取labview的EXE内子控件句柄?
用spy++查看edit控件的ID 在程序中先findwindow主窗口,再枚举其中的edit控件ID, 获得其hwnd, 再SendMessage 一个WM_GETTEXT消息

相似回答