dwStyle = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | 
          WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VISIBLE;CreateWindows(......);
......
m_dwWindowStyle = GetWindowLong( m_hWnd, GWL_STYLE );
1.此时的得到的m_dwWindowStyle不等于dwStyle,为什么??2.在WM_SIZE消息里
  m_dwWindowStyle = GetWindowLong( m_hWnd, GWL_STYLE );
  发现m_dwWindowStyle也改变了,为什么??

解决方案 »

  1.   

    //获取窗口风格 
    LONG lStyle = ::GetWindowLong(hwndCurr, GWL_STYLE); 
    //如果设置了ES_PASSWORD属性 
    if (lStyle & ES_PASSWORD) 

    char szText[255]; 
    //通过掌握的句柄hwndCurr向此控件发送WM_GETTEXT消息 
    ::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText);
    //密码已保存在szText中 
      

  2.   

    该函数获得有关指定窗口的信息,
    函数也获得在额外窗口内存中指定偏移地址的32位长整型值。
    LONG GetWindowLong(HWND hWnd,int nindex);
    hwnd:窗口句柄及间接给出的窗口所属的窗口类。函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。    函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);    参数:    hWnd:窗口句柄及间接给出的窗口所属的窗口类。    nlndex:指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要获得任意其他值,指定下列值之一:    GWL_EXSTYLE;获得扩展窗日风格。    GWL_STYLE:获得窗口风格。    GWL_WNDPROC:获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用GWL_WNDPROC函数调用窗口过程。    GWL_HINSTANCE:获得应用事例的句柄。    GWL_HWNDPAAENT:如果父窗口存在,获得父窗口句柄。    GWL_ID:获得窗口标识。    GWL_USERDATA:获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。    在hWnd参数标识了一个对话框时也可用下列值:    DWL_DLGPROC:获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。    DWL_MSGRESULT:获得在对话框过程中一个消息处理的返回值。    DWL_USER:获得应用程序私有的额外信息,例如一个句柄或指针。    返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。    备注:通过使用函数RegisterClassEx将结构WNDCLASSEX中的cbWndExtra单元指定为一个非0值来保留额外类的存储空间。
      

  3.   

    The GetWindowLong function retrieves information about the specified window. The function also retrieves the 32-bit (long) value at the specified offset into the extra window memoryLONG GetWindowLong(HWND, int);
    使用第二个参数可以分别获得当前窗口实例的相关信息。
    要获得当前窗口的风格你可以使用GWL_STYLE,如扩展风格可以使用GWL_EXSTYLE,更多的信息可查阅MSDN。
      

  4.   

    编译器或操作系统会为你添加一些属性,可以用VC提供的工具SPY++查看