窗口风格的有关问题,窗口[将要有的风格]和窗口[现有的风格]

窗口风格的问题,窗口[将要有的风格]和窗口[现有的风格]



1. 对话框拖一个ListBox (默认就已经属性勾选 垂直滚动条 WS_VSCROLL)


2. 继承CListBoxEx
class CListBoxEx : public CListBox
{...}


3. 在以下函数获得窗口风格
C/C++ code

void CListBoxEx::PreSubclassWindow()
{
    DWORD dwStyle = GetWindowLong(m_hWnd, GWL_STYLE);
//比较dwStyle数值 没有 WS_VSCROLL 属性
...

//10100000000 00010 00000 01000 10011 //dwStyle 
//00000000010 00000 00000 00000 00000 //GWL_STYLE

}



4. 然后向控件插入数据 超过ListBox显示高度后 滚动条出现

5. 再次获得控件风格 比较数值后 有WS_VSCROLL 属性
C/C++ code

//10100000010 00010 00000 01000 10011 //dwStyle 
//00000000010 00000 00000 00000 00000 //GWL_STYLE






请问:如何通过代码知道我这个ListBox将会有WS_VSCROLL属性?


好吧 简单点说: 默认拖到对话框上的ListBox 如何在该类的 PreSubclassWindow() 函数中获得他有 WS_VSCROLL 属性?

(WS_VSCROLL 只是个挡箭牌 不是说一定是特指这一个窗口属性 你懂的 :) )


****************************************华丽的分割线*****************************************

PS: 对于ModifyStyle()函数老是修改不了控件风格的孩子伤不起啊 与上面无关 表示抱怨一下 囧







------解决方案--------------------
GetWindowLong(m_hWnd, GWL_STYLE) & WS_VSCROLL,如果为非0值,表示这个风格中有WS_VSCROLL属性;如果为0值,表示没有WS_VSCROLL风格。

这是获取普通窗口风格的,如果要查看EX风格,用GetWindowLong(m_hWnd, GWL_EXSTYLE)。
------解决方案--------------------
C/C++ code
ModifyStyle(0, WS_VSCROLL);

------解决方案--------------------
The following styles can be specified wherever a window style is required. After the control has been created, these styles cannot be modified, except as noted. ,可以试下SetWindowLong.

------解决方案--------------------
窗口风格很是搞不懂,ModifyStyle 、ModifyStyleEx
 SetWindowLong 什么时候该用哪个,都不清楚,好像也不一定成功!谁能解答一下