談談WS_EX_CLIENTEDGE視窗風格

來源:互聯網
上載者:User

關於該風格要注意幾點的是:

  1. WS_EX_CLIENTEDGE視窗風格並不是對所有視窗都有效,只有視窗有客戶區的時候才有效,這樣當它用在比如button,combox,tab無客戶區的控制項時,它是無效的。
  2. 通過對話方塊模版建立的控制項ListCtrl,如果你指定了WS_BORDER,這時WS_BORDER將被拿掉,而WS_EX_CLIENTEDGE會被設定上。但是如果你通過create手動建立則不會出現這種情況。
  3. 當WS_EX_CLIENTEDGE設定上,在控制項邊緣和客戶區之間將有2個像素大小的空隙,與其他做比較:WS_BORDER,一個像素,WS_EX_WINDOWEDGE為3個象素;WS_EX_STATICEDGE為1個像素,當WS_EX_CLIENTEDGE|WS_EX_WINDOWEDGE,有5個像素,而WS_EX_CLIENTEDGE|WS_EX_STATICEDGE|WS_EX_STATICEDGE還是5個像素,說明有像素重在一起的時候。
  4. WS_EX_CLIENTEDGE只在建立時設定有效,如果在建立之後設定,必須跟上另一個參數,SWP_DRAWFRAME或SWP_FRAMECHANGED,實際上這兩者值完全一樣。如下是通過create建立並添加WS_EX_CLIENTEDGE風格的例子:
    m_list.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT,CRect(0,0,100,100),this,0);m_list.ModifyStyleEx(0,WS_EX_CLIENTEDGE,SWP_FRAMECHANGED);

    原因在於當添加WS_EX_CLIENTEDGE實際上要重設客戶區大小才能起作用,而重設客戶區只能通過WM_NCCALCSIZE來設定,但是這個訊息只有才建立時才會觸發,單純修改WGL_EXSTYLE屬性並不會觸發,添加SWP_FRAMECHANGED正是為了觸發該訊息。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.