我用sdk先生成了一个WS_POPUP的风格的窗体!
我现在想实现这个一个功能,就是在窗体中,单击鼠标左键,窗体变成WS_OVERLAPPEDWINDOW风格,
查阅MSDN,知道用SetWindowLong函数。然后在程序里的加入如下代码:
case WM_LBUTTONDOWN:
SetWindowLong(hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);
break;
运行以后,程序抖了一下就没反映了,并没有改变风格。是不是还需要什么语句阿?

解决方案 »

  1.   

    SetWindowPos(NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE |
           SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
      

  2.   

    我刚才也找到这个方法,但还有个问题,如果我要同时修改窗体尺寸,怎么办?我这么写,窗体
    尺寸是改变了,但是怎么背景没有刷新阿???黑黑的一片!(我本来是全屏的),代码如下:SetWindowPos(NULL, 0, 0, 100, 200, SWP_FRAMECHANGED | SWP_NOACTIVATE |SWP_NOZORDER);
      

  3.   

    SetWindowPos(hWnd, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE |
    SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER);
      

  4.   

    SetWindowLong(hWnd,GWL_STYLE,WS_OVERLAPPEDWINDOW);
    为什么不行
      

  5.   

    Certain window data is cached, so changes you make using SetWindowLong will not take effect until you call the SetWindowPos function. Specifically, if you change any of the frame styles, you must call SetWindowPos with the SWP_FRAMECHANGED flag for the cache to be updated properly.