求助: WM_CREATE中使用this指针.

fanjunwu 2008-11-01 01:59:29
我想在WM_CREATE中使用this指针.
代码这样?
MDICREATESTRUCT mdi;
SecureZeroMemory(&mdi,sizeof(MDICREATESTRUCT));
mdi.lParam = (LPARAM)this;
//
hThisWnd = CreateMDIWindow(WndClasName.c_str(),
WndTitle.c_str(),NULL ,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
hThisWndParent,hInstance,(LPARAM)&mdi);

窗口过程中这样处理.
case WM_NCCREATE:
{
assert( ! IsBadReadPtr((void *) lParam,sizeof(CREATESTRUCT)) );
MDICREATESTRUCT * pMDIC = (MDICREATESTRUCT *)(((LPCREATESTRUCT) lParam)->lpCreateParams);
psd = (ps::CPickSecondDataFormHtml *) (pMDIC->lParam);
//assert( ! IsBadReadPtr(psd, sizeof(ps::CPickSecondDataFormHtml)) );
SetWindowLongPtr(hWnd, GWL_USERDATA, (LONG_PTR)psd);

结果发现pMDIC->lParam 并不等于this (mdi.lParam = (LPARAM)this;)这是为何?
想了半天.也不明白.请高手指点.

...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanjunwu 2008-11-03
  • 打赏
  • 举报
回复
WM_NCCREATE比WM_CREATE 消息早到.所以我在wm_nccreate中处理了.不过.我试过,在wm_create中也一样.
就是Createstruct结构转换成mdicreatestruct结构时.里边的lparam就变了.还是原来的赋值的lparam值了.
我重新写了个程序.可以.并且是多线程的.
会不会和程序是多文档有关啊.
jia_xiaoxin 2008-11-01
  • 打赏
  • 举报
回复
When the MDI child window is created, the system sends the WM_CREATE message to the window. The lParam parameter of WM_CREATE contains a pointer to a CREATESTRUCT structure

求助:WM_CREATE中使用this指针
可是你的程序中用的是 case WM_NCCREATE:

太乙 2008-11-01
  • 打赏
  • 举报
回复
没太明白啥意思,友情up~~

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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