【Demo 0026】读取窗体类信息

在上一节中我们练习了注册一个类,并通用此类实例化一个对象。 今天我们反过来学, 对于己实例化的窗体如何读取自身的注册信息,Window 同样提供了对应的方法。

(一) 函数声明

    int GetClassName(HWND hWnd, LPTSTR lpClassName, int nMaxCount );

     获取实例窗体类名    

     BOOL GetClassInfoEx(HINSTANCE hinst, LPCTSTR lpszClass, LPWNDCLASSEX lpwcx );

     获取进程中指定类信息

     BOOL GetClassInfo(HINSTANCE hInstance, LPCTSTR lpClassName, LPWNDCLASS lpWndClass );

     获取进程中指定类信息(与GetClassInfoEx不同之处在于WNDCLASSEX返回值多了icomsm值)

   

    这几个函数比较简单

    Code:  本例演示读取窗体的类名以及根据类名提取其他类信息

WNDCLASSEX wcx    = {0};
wcx.cbSize        = sizeof(wcx);
TCHAR szClassName[256]    = {0};
GetClassName(hWnd, szClassName, 256);
if (GetClassInfoEx(GetModuleHandle(NULL), szClassName, &wcx))
{
    TCHAR szClassInfo[1024];
    _stprintf(szClassInfo,
              _T("ClassName:        %s\n")
              _T("Style:            %d\n")
              _T("class Extra:        %d\n")
              _T("Wnd Extra:        %d\n")    
              _T("Cursor:            0X%X\n")
              _T("Icon:            %X\n")
              _T("Background:        0X%0X\n")
              _T("MenuName:        %s\n")
              _T("Instance:        0X%X\n")
              _T("WndProc:        0X%06X\n"),
              wcx.lpszClassName,
              wcx.style,
              wcx.cbClsExtra,
              wcx.cbWndExtra,
              wcx.hCursor,
              wcx.hIcon,
              wcx.hbrBackground,
              wcx.lpszMenuName,
              wcx.hInstance,
              wcx.lpfnWndProc);
    SetWindowText(GetDlgItem(hWnd, ID_LABINFO), szClassInfo);
    OutputDebugString(szClassInfo);
}

(二) 特别声明

   GetClassInfoEx 以及 GetClassInfo 在读取其他进行的窗体类信息会失败(在后面章节中我们再讲述)

演示代码

原文地址:https://www.cnblogs.com/ztercel/p/2141653.html