可以在MFC-App-CMainFrame中设置WNDCLASSEX :: lpszClassName吗?

时间:2016-12-20 23:02:19

标签: visual-studio-2015

( 类似的问题"如何从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

马丁

0 个答案:

没有答案