【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 在读取其他进行的窗体类信息会失败(在后面章节中我们再讲述)

 

演示代码

你可能感兴趣的:(demo)