CALLBACK回调函数能作为C++的类中的成员函数嘛?
如下的一段程序是C写的,我需要用C++的OOP方法来实现
,那个EnumWindowsProc回调函数可写成C++类里的成员函数嘛?
typedef struct
{
HWND hWnd;
char cWinBuf[256];
}WINLIST;
WINLIST gWinList[256];
int giCountWin,j;
BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam )
{
char buffer[256];
GetWindowText(hWnd, buffer, 256);
if ( strlen(buffer) )
{
if (giCountWin < 256)
{
gWinList[ giCountWin].hWnd = hWnd;
strcpy(gWinList[ giCountWin].cWinBuf,buffer);
giCountWin ++;
}
}
return TRUE;
}
void CloseSpedia()
{
giCountWin = 0;
EnumWindows( (WNDENUMPROC)EnumWindowsProc,0);
for ( j = 0; j<giCountWin; j++)
{
if ( strcmp(gWinList[j].cWinBuf,"画笔") == 0 )
{
::PostMessage( gWinList[j].hWnd,WM_CLOSE,0,0);
break;
}
}
}
,那个EnumWindowsProc回调函数可写成C++类里的成员函数嘛?
typedef struct
{
HWND hWnd;
char cWinBuf[256];
}WINLIST;
WINLIST gWinList[256];
int giCountWin,j;
BOOL CALLBACK EnumWindowsProc( HWND hWnd, LPARAM lParam )
{
char buffer[256];
GetWindowText(hWnd, buffer, 256);
if ( strlen(buffer) )
{
if (giCountWin < 256)
{
gWinList[ giCountWin].hWnd = hWnd;
strcpy(gWinList[ giCountWin].cWinBuf,buffer);
giCountWin ++;
}
}
return TRUE;
}
void CloseSpedia()
{
giCountWin = 0;
EnumWindows( (WNDENUMPROC)EnumWindowsProc,0);
for ( j = 0; j<giCountWin; j++)
{
if ( strcmp(gWinList[j].cWinBuf,"画笔") == 0 )
{
::PostMessage( gWinList[j].hWnd,WM_CLOSE,0,0);
break;
}
}
}
...全文
相关推荐
C/C++ 函数指针教程
Functors是C/C++编程中的重要工具,掌握这些技术对于编写高效、灵活和可扩展的程序至关重要。
C++将类的成员函数作为回调函数
### C++将类的成员函数作为回调函数#### 背景与问题在C++编程中,回调函数是一种常见的设计模式,它允许程序在特定的事件或条件下调用一个预先注册的函数。
C++中回调函数(CallBack)的用法分析
通过理解和掌握回调函数的原理及在C++中的使用技巧,开发者可以更灵活地设计和实现复杂的功能。
如何让类的成员函数作为回调函数
#### 五、解决方法为了使类的成员函数能够作为回调函数使用,可以采用以下几种方法:1.
C++中建立对象间消息连接的系统方法
用过C++进行过面向对象程序设计的用户都知道,程序中的对象很少单独存在。不考虑对象间的相互作用几乎是不可能的。所以,标识对象间的关系或建立对象间的消息连接是面向对象程序设计的一项重要任务。本文着重从C++程序设计的角度,提出一种建立对象间消息连接的实用方法。如果你想详细了解面向对象程序设计技术,请参阅有关专著。 大家都知道对象是数据和方法的封装体。在C++中,它们分别表现为数据成员和成员


