( 类似的问题"如何从HWND获得WNDCLASS?",How to get WNDCLASS from HWND? 其中WNDCLASSEX希望被修改 )
我试过设置WNDCLASSEX :: lpszClassName 能够从我们自己的MFC-Apps的MainFrames中识别Window句柄 (以区别具有相同PID的现有Wnds) (让他们通过WM_COPY-DATA-Messages进行交流) 它似乎在
中工作CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
// m_hWnd is still NULL, so no dependant Wnds should exist but cs.lpszClass even contains (registered?!) className of the Mainframe-Window
{
if (cs.lpszClass!=NULL) { // when second call happens
WNDCLASSEX wce;
GetClassInfoEx(AfxGetInstanceHandle(),cs.lpszClass,&wce);
wce.lpszClassName="Test";
UnregisterClass(cs.lpszClass,AfxGetInstanceHandle());
RegisterClassEx(&wce);
GetClassInfoEx(AfxGetInstanceHandle(),cs.lpszClass,&wce); // wce.lpszClassName="Test" :-)
};
if(!CMDIFrameWndEx::PreCreateWindow(cs)) return FALSE;
}
但仅仅是因为CMainFrame :: LoadFrame返回FALSE而App没有开始......
( 在搜索过程中,我们想要
// ... HWND hw ;
TCHAR className[256] ;
GetClassName(hw, className, 256);
WNDCLASSEX wce;
GetClassInfoEx(GetModuleHandle(nullptr), className, &wce);
// if (wce.lpszClassName=="Test") ... // Mainframe of own App
)
马丁