用Spy++看到的两个对话框的WndProc地址一样是什么意思?我想模仿QQ主界面的#32770类的对话框,怎样才能做到跟它一样的WndProc地址?

解决方案 »

  1.   

    那如果我想模仿QQ主界面的#32770类的对话框,怎样才能做到跟它一样的WndProc地址?楼上好像只回答了一半的问题。
      

  2.   

    地址是相对的,所以相同很正常。句柄才唯一,所以只有取得QQ界面的句柄,然后取得的WndProc函数的地址才是你想要的地址。
    看楼主的意思是想写死这个地址,肯定是不行的,只能运行的时候去获取。
      

  3.   

    #32770, 只是一个窗口的classname, 只要是对话框程序,其主对话框都是#32770, 并且#32770在在MFC中的源代码中就可以直接找到。所以WndProc的地址实际上对你没什么意义。
      

  4.   

    可以试下,先创建一个系统对话框
    HWND hSysWnd = CreateWindow("#32770", ...);
    返回系统对话框句柄,然后为已存在的对话框赋值新的窗口过程
    SetWindowLong(hMyWnd, GWL_WNDPROC, GetWindowLong(hSysWnd, GWL_WNDPROC));
      

  5.   

    可能我有点不太理解...DentistryDoctor可能是对的
      

  6.   

    不知道楼上说的“地址是相对的”是想说明什么?
      我不是说想获取QQ里的地址,我是说自己做一个仿照QQ的界面,原来我想自己做的WndProc跟QQ的地址一样是不可能,因为这意味着两者是同一个窗口类了,即同一个窗口回调。
      但是www.vckbase.com上有人确实做到了。地址跟QQ一样的,都是0x77D241E2.
      http://www.vckbase.com/document/viewdoc/?id=1725
      

  7.   

    如果是MFC程序的话,那么所有窗体就是使用一个WndProc。
    QQ程序每次加载的内存地址是不一样的,程序运行的环境也不一样,所以不能使用它的WndProc。
      

  8.   

    楼上: 如果是MFC程序的话,那么所有窗体就是使用一个WndProc。
    好像不可能的吧?应该每个窗口都有自己的WndProc吧?
      

  9.   

    刚刚说错了!楼上: 如果是MFC程序的话,那么所有窗体就是使用一个WndProc。
    好像不可能的吧?应该每个窗口类都有自己的WndProc吧?
      

  10.   

    顺便问一下,网上哪里能找到关于"MFCReportCtrl"的资料??找了半天没找到!
      

  11.   


    注册窗口类时设定窗口附加字节或使用GWL_USERDATA,并在CreateWindowEx中指定lParam,可在程序中只注册一个窗口类,每个窗口在处理消息时使用同一个lpWndProc,在lpWndProc中将消息分发到相应的窗口处理。n个窗口的WndProc很可能完全相同,但可以有各自的处理。
      

  12.   

    非常感谢chehw(chehw)和mynamelj给我的回答或建议!
    不过我还是不明白怎样才能是我的程序中的WndProc地址能刚好和QQ中的一样? 难道
    http://www.vckbase.com/document/viewdoc/?id=1725 
    中的例子仅仅是偶尔吗?