求教: wc.lpfnWndProc = (WNDPROC)WndProc , 括号里面的WNDPROC什么意思呀?

letok 2004-05-08 04:50:48
wc.lpfnWndProc = (WNDPROC)WndProc;

这是注册窗口类里的一句,

(WNDPROC)

是什么意思呀?
...全文
586 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hab1980 2004-05-09
  • 打赏
  • 举报
回复
"(WNDPROC)"是用来进行函数类型转换的
WNDPROC的定义如下:
typedef LRESULT CALLBACK (*WNDPROC)(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
如果你的函数WndProc是与上面完全一样的形式进行定义,那就没必要进行函数类型转换
如果有所不同,比如:
LRESULT CALLBACK WndProc(
HWND hwnd,
int msg,
int p1,
int p2
);
那么就应当进行函数类型的转换

----以上只是我的推测,可能是错误的,仅做交流与讨论
letok 2004-05-09
  • 打赏
  • 举报
回复
转换不是应该写成

WNDPROC (WndProc)


试了一下,好像括号扩前面和后面都可以


看来就是类型转换了吧

letok 2004-05-08
  • 打赏
  • 举报
回复
还是不明白

wc.lpfnWndProc = (WNDPROC)WndProc;

这个表达的左边是一个函数指针,
右边的WndProc是一个函数名,直接等于就好了,
“(WNDPROC)”是干吗用的?
kingofvc 2004-05-08
  • 打赏
  • 举报
回复
LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM)
自由的风 2004-05-08
  • 打赏
  • 举报
回复
窗口型函数指针
lanstar200 2004-05-08
  • 打赏
  • 举报
回复
类型转换
wenxi2004 2004-05-08
  • 打赏
  • 举报
回复
WNDPROC A 32-bit pointer to a window procedure.
FengYuanMSFT 2004-05-08
  • 打赏
  • 举报
回复
It's a function type.

16,473

社区成员

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

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

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