can't convert para from"void(...)" to "void(__stdcall *)(...)" 该怎么改呢?

zhyzhx_cn 2001-09-04 03:47:17
STDMETHODIMP CProcess::QueryData()
{CreateSocketWnd();
SetTimer(m_hWnd,1,500,TimerProc);}

BOOL CProcess::CreateSocketWnd()
{
WNDCLASS wc;
BOOL rt = FALSE;
HINSTANCE hins = _Module.m_hInst;//AfxGetInstanceHandle();
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)TimerProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hins;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "SocketdllWClass";
if(RegisterClass(&wc))
{
m_hWnd = CreateWindow( "SocketdllWClass", "Socket Notification Sink",
WS_OVERLAPPED,0, 0, 0, 0, NULL, NULL, hins, NULL);
if(m_hWnd)rt = TRUE;
}
return rt;
}

BOOL CALLBACK CProcess::TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{ switch(idEvent)
{
case WM_TIMER:
{ CheckDB();
break;
}
default: break;
}
return DefWindowProc(hDlg, uMsg, wParam, lParam);
}


can't convert para from"void(...)" to "void(__stdcall *)(...)" 该怎么改呢?
...全文
217 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
richi_ 2001-09-04
  • 打赏
  • 举报
回复
azuo_lee()真是热心肠啊!
要是我早就走了。
snowedforest 2001-09-04
  • 打赏
  • 举报
回复
太幸福了。 :)
sizhi 2001-09-04
  • 打赏
  • 举报
回复
男人和女人,
哎...
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
哦,好吧,谢谢你了,不好意思,麻烦了你这么久,~-~
azuo_lee 2001-09-04
  • 打赏
  • 举报
回复
TimerWndProc不是让你执行的。那是Windows在适当的时候调用的。

OK,不能帮你了,我要走了。
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
我不能执行我的TimerWndProc啊
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
呵呵,干嘛要say sorry啊?女孩也一样啊,~-~

我的CheckDB是一个DLL提供的
azuo_lee 2001-09-04
  • 打赏
  • 举报
回复
啊?你是女的?sorry……

SetTimer最后一个参数为NULL没有问题,WM_TIMER会发送到WindowProc中去。
别忘了,TimerWndProc是作为WindowProc注册给Window class的。
可能WindowProc叫TimerWndProc不太恰当,叫做SocketWndProc可能更好。

我还是不能保证我的代码能工作,因为细节问题有很多,比如CheckDB到底是不是静态函数?
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
为NULL的话,就不能进到我的TimerWndProc去执行啊
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
可是SetTimer(m_hWnd, 1, 500, NULL);第四个参数为NULL对吗???
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
to azuo_lee():~-~,谢谢你,你也不会说女孩不行,呵呵
azuo_lee 2001-09-04
  • 打赏
  • 举报
回复
STDMETHODIMP CProcess::QueryData()
{
if(CreateSocketWnd())
SetTimer(m_hWnd, 1, 500, NULL);
}

// Maybe you also need another member function like this:
//STDMETHODIMP CProcess::EndQueryData()
//{
// if(IsWindow(m_hWnd)
// {
// KillTimer(m_hWnd, 1);
// DestroyWindow(m_hWnd); // we call DestroyWindow directlly
// // instead of posting a WM_CLOSE message
// // since our window is quite a simple one
// }
//}

// NOTE: following function must be a STATIC member
LRESULT CALLBACK CProcess::TimerWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_TIMER:
CheckDB(); // this must also be a static member. otherwise,
// we have to use some other technique to obtain
// "this" pointer
break;
// we need not process WM_DESTROY message, because the thread won't
// terminate even if the window is destroied.
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}

BOOL CProcess::CreateSocketWnd()
{
BOOL rt = FALSE;
HINSTANCE hins = _Module.m_hInst;//AfxGetInstanceHandle();

WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = TimerWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hins;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = "SocketdllWClass";

if(RegisterClass(&wc))
{
m_hWnd = CreateWindow( "SocketdllWClass", "Socket Notification Sink",
WS_OVERLAPPED,0, 0, 0, 0, NULL, NULL, hins, NULL);
if(m_hWnd)
rt = TRUE;
}
return rt;
}

呵呵,随手写来,我不知道这代码能不能工作。祝你好运。
zhyzhx_cn 2001-09-04
  • 打赏
  • 举报
回复
to azuo_lee():那你说在COM中怎么实现定时器啊?不支持MFC的啊
quengzi 2001-09-04
  • 打赏
  • 举报
回复
kk
azuo_lee 2001-09-04
  • 打赏
  • 举报
回复
你可真是个牛人,用TimerProc作WindowProc???
那你最后在TimerProc中调用DefWindowProc时的hDlg、wParam从哪里来的?
硬要将“TimerProc”作WindowProc也不是不可以,可你又为什么用它来SetTimer?
简直是乱七八糟。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧