sdk编程,有没有可能用对象来管理SetTimer?比如说我想让一个窗口自己来移动。
class AAA
{
void MoveTo(int, int);
static VOID CALLBACK TimerProc(HWND hCtrl, UINT message,
UINT iTimerID, DWORD dwTime);
};
void AAA::MoveTo(int x, int y)
{
??? SetTimer(wnd.hCtrl, 5, 200, this->TimerProc); ???
}
这个Timerproc里面必须是静态的东西,所以让对象操作好像不适合?若你让子窗口自己移动,除了WM_TIMER,还有什么办法?
class AAA
{
void MoveTo(int, int);
static VOID CALLBACK TimerProc(HWND hCtrl, UINT message,
UINT iTimerID, DWORD dwTime);
};
void AAA::MoveTo(int x, int y)
{
??? SetTimer(wnd.hCtrl, 5, 200, this->TimerProc); ???
}
这个Timerproc里面必须是静态的东西,所以让对象操作好像不适合?若你让子窗口自己移动,除了WM_TIMER,还有什么办法?
解决方案 »
- 无法定位序数798于动态链接库mfco42d
- 学习网络编程的一些问题!
- 请教CWnd::CreateEx问题
- vc 查找其他窗口 Activex
- 请教nColors = 1 << ds.dsBmih.biBitCount 是什么意思?
- 请教一个OnDraw的问题?
- 数据库中的数据太多了,但是我不得不把它们全部读出放在Treectrl中,一次读出的话太消耗内存了,有什么好办法呀
- 各位大哥,小弟想问一下CDialog::Create(...)怎么用?
- 请问如何像winamp,金山毒霸一样修改标题栏,最大化、最小化按钮?有例程最好,[email protected]
- Microsoft Windows CE Toolkit for Visual C++ 6.0
- unsigned char * 问题 Base64解码
- ADO+ACESS数据库统计时间段2008-9-9到2008-12-12,SQL怎么实现?
怎样在这个对象里面处理WM_TIMER?这样不就完全封装了嘛。
查到要给this指针个什么东西,可是这就必须在这个静态TimerProc里面处理,可是里面必须是静态变量,所以怎么和对象联系呢?
那就只能把ID值变成对象数组的index,也是十分麻烦。
如果不这样,TimerProc有没有其他参数可传,也是郁闷。多谢了。
{
void MoveTo(int, int);
static VOID CALLBACK TimerProc(HWND hCtrl, UINT message,
UINT iTimerID, DWORD dwTime);
protected: //{{AFX_MSG(AAA)
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
void AAA::MoveTo(int x, int y)
{
SetTimer( 5, 200, this->TimerProc ); //如果窗口继承子CWnd 就可以直接使用SetTimer来打开自己类的定时了}
BEGIN_MESSAGE_MAP(AAA, CWnd)
ON_WM_TIMER()
END_MESSAGE_MAP()void AAA::OnTimer(UINT nIDEvent)
{
//在这里写AAA窗口移动的代码
}大体上就是这个样子了
可惜我不会MFC编程,只是用SDK来玩玩。
MFC是C++写的,所以响应SetTimer应该没有太大问题。这个自己定义的窗口类CWnd不知是什么原理,如果用SDK来写个类,不知怎么写成窗口类。
这个this->TimerProc虽然编译没有报错,但毕竟TimerProc是静态成员函数,可否成立?
而且在函数里面写代码,都还得是静态变量,如我上面所说,还是没有解决问题。如果太麻烦,还不如在主窗口响应WM_TIMER消息。
SetTimer(hWnd,1,1000,NULL);
然后 case WS_TIMER: