EnumChildWindows需要调用一个FindChildWnd的回调函数,功能原型我在WIN32 API下运行通过了,
想把它放进MFC对话框程序的菜单函数里...//在CtestDlg.h
public:
BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam);//在 CTestDlg.cpp
struct HWNDstruct
{
/*一些句柄储存成员*/
}SomeHWND;BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam)
{
int hWndID;
hWndID = ::GetDlgCtrlID(hWnd);
/*把匹配ID的hWnd写入到上面的SomeHWND成员中*/
return TRUE;
}void CtestDlg::OnPopStart()
{
HWND HHwnd = ::FindWindow(NULL,_T("Stocker"));
if(HHwnd)
{
EnumChildWindows(HHwnd,this->FindChildWnd(HHwnd,0),NULL); //枚举出实时句柄,存入结构
::SendMessage(句柄结构成员,WM_XXX,0,0); //发送消息
}似乎遇上了麻烦,编译不通过,看不懂下面这个告警是什么意思
应该如何修改才能在MFC菜单中运行?error C2664: 'ATL::EnumChildWindows' : cannot convert parameter 2 from 'BOOL' to 'WNDENUMPROC'
1> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
想把它放进MFC对话框程序的菜单函数里...//在CtestDlg.h
public:
BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam);//在 CTestDlg.cpp
struct HWNDstruct
{
/*一些句柄储存成员*/
}SomeHWND;BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam)
{
int hWndID;
hWndID = ::GetDlgCtrlID(hWnd);
/*把匹配ID的hWnd写入到上面的SomeHWND成员中*/
return TRUE;
}void CtestDlg::OnPopStart()
{
HWND HHwnd = ::FindWindow(NULL,_T("Stocker"));
if(HHwnd)
{
EnumChildWindows(HHwnd,this->FindChildWnd(HHwnd,0),NULL); //枚举出实时句柄,存入结构
::SendMessage(句柄结构成员,WM_XXX,0,0); //发送消息
}似乎遇上了麻烦,编译不通过,看不懂下面这个告警是什么意思
应该如何修改才能在MFC菜单中运行?error C2664: 'ATL::EnumChildWindows' : cannot convert parameter 2 from 'BOOL' to 'WNDENUMPROC'
1> Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
解决方案 »
- 由文件夹窗口句柄获取其全路径问题
- Animate动态显示窗体学习过程中遇到的问题
- GetClientRect返回全为0
- 这样的女同事,大家说强不强?散分
- 初学者想开始VC数据库编程,应该如何起步?有些什么好书推荐?(没有一点数据库基础的情况下),谢谢指导
- vc写的dll,被vb调用,参数传递不正确!vc的参数类型是 char*
- 关于Hook. 请问在KeyboardProc中调用GetCurrentThreadId会得到哪个线程的ID?
- CTreeCtrl的相关问题,请教各位,是很菜的,来拿分呀
- c++ build5应用程序在windows xp中出错,为什么?
- 对图片生成遮罩图 来透明显示位图的问题
- vc2008 mfc开发ActiveX,添加了接口属性后,接口下不显示
- VC图像处理
-->
EnumChildWindows(HHwnd,FindChildWnd,NULL);
这个也曾经试过的,有个这样的告警,
error C3867: 'CTestDlg::FindChildWnd': function call missing argument list; use '&CTestDlg::FindChildWnd' to create a pointer to member
于是我硬头皮改,
EnumChildWindows(HHwnd,&CTestDlg::FindChildWnd,NULL); //枚举出结构句柄
告警:error C2664: 'ATL::EnumChildWindows' : cannot convert parameter 2 from 'BOOL (__cdecl CTestDlg::* )(HWND,LPARAM)' to 'WNDENUMPROC'-_-...
{
TCHAR buf[1024] = {0};
GetWindowText(hWnd, buf, 1024);
AfxMessageBox(buf);
return TRUE;
}EnumChildWindows(GetSafeHwnd(), EnumWindowProc, NULL);
用了
EnumChildWindows(GetSafeHwnd(),FindChildWnd,NULL); //枚举出结构句柄不过还是不行呢
有这样的告警:1>.\TecstDlg.cpp(1053) : error C3867: 'CTestDlg::FindChildWnd': function call missing argument list; use '&CTestDlg::FindChildWnd' to create a pointer to member貌似只能以指针方式,我曾试过做一个指针方式,因为对MFC的整个组织传递方式不是很了解,所以也瞎折腾了
BOOL CALLBACK FindChildWnd(HWND hWnd, LPARAM lParam)
不知道如何才能正确地被调入。