用C+SDK编程,窗口可否在CreateWindow前就定义一个ID,然后一直带着走

用C+SDK编程,窗口能否在CreateWindow前就定义一个ID,然后一直带着走?
本帖最后由 WQ771211 于 2012-12-13 22:26:42 编辑
我希望多个窗口公用一个WndProc,再根据hWnd和message查表,获得对应的处理函数。
表的字段包括:窗口句柄,消息代号,处理函数指针

但是窗口句柄要在CreateWindow之后才能得到,错过了对WM_CREATE消息的处理,能在窗口创建前就分配一个ID,让它一直带着走吗?

------解决方案--------------------
是可以的 CreateWindow 的原型
HWND WINAPI CreateWindow(
  _In_opt_  LPCTSTR lpClassName,
  _In_opt_  LPCTSTR lpWindowName,
  _In_      DWORD dwStyle,
  _In_      int x,
  _In_      int y,
  _In_      int nWidth,
  _In_      int nHeight,
  _In_opt_  HWND hWndParent,
  _In_opt_  HMENU hMenu,
  _In_opt_  HINSTANCE hInstance,
  _In_opt_  LPVOID lpParam
);

其中 lpParam 就是 WM_CREATE 時的 LPARAM 轉成 CREATESTRUCT 下的 lpCreateParams

你可以先建一個全域 TABLE 每次要 CreateWindow 前先去 TABLE 找一個空項當CreateWindow 的 lpParam 自然就連上去了 ,MFC FiveWin 都是這樣去管理 ,才能用 HWND 找的到對映的 Object