【问题标题】:Getting window style获取窗口样式
【发布时间】:2010-04-21 01:02:23
【问题描述】:

我正在尝试使用 GetWindowLong(hWnd, GWL_STYLE) 检查窗口是否具有某种样式,但这给了我一个 LONG 类型的变量。你将如何从 const 值类型 'WS_CAPTION' 中检查特定样式?

【问题讨论】:

    标签: c++ window-style


    【解决方案1】:

    使用按位 & 运算符与该 long 类型进行比较,

    例子

    if (szLng & WS_CAPTION){
        // that window has caption
    }
    

    【讨论】:

    • 不是逻辑,而是按位 AND 运算符。
    【解决方案2】:

    大多数窗口样式 WS_ 都是单比特值; 也就是每一个在 dwStyles 中只占一个位。

    这里dwStyles可以从:DWORD dwStyles = CWnd::GetStyle();获取

    但是一些WS_的样式,比如WS_CAPTIONWS_OVERLAPPEDWINDOWWS_POPUPWINDOW,结合几个单比特样式。

    下面的测试代码对于单位窗口样式是可以的 但不是OK 用于组合样式。

    DWORD dwSomeStyle = WS_... ;
    BOOL bSomeStyleIsPresentForThisWnd;
    
    if (dwStyles & dwSomeStyle)
      bSomeStyleIsPresentForThisWnd = TRUE;
    else
      bSomeStyleIsPresentForThisWnd = FALSE;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多