PRB: Most Common Cause of SetPixelFormat() Failure

ID: Q126019


The information in this article applies to:
  • Microsoft Win32 Application Programming Interface (API), used with:
    • Microsoft Windows NT, versions 3.5, 3.51, 4.0
    • Microsoft Windows 95
  • Microsoft Windows 2000


SYMPTOMS

SetPixelFormat() fails with incorrect class or window styles.


CAUSE

Win32-based applications that use Microsoft's implementation of OpenGL to render onto a window must include WS_CLIPCHILDREN and WS_CLIPSIBLINGS window styles for that window.


RESOLUTION

Include WS_CLIPCHILDREN and WS_CLIPSIBLINGS window styles when in a Win32- based application, you use Microsoft's implementation of OpenGL to render onto a window.

Additionally, the window class attribute should not include the CS_PARENTDC style. The two window styles can be added to the dwStyles parameter of CreateWindow() or CreateWindowEX() call. If MFC is used, override PreCreateWindow() to add the flags. For example:


   BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
   {
       cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS);

       return CView::PreCreateWindow(cs);
   } 
For more information, please refer to "comments" section of the online documentation on SetPixelFormat.


STATUS

This behavior is by design.

Additional query words: 4.00

Keywords : kbNTOS400 kbWinOS2000 kbSDKWin32 kbWinOS95
Version : WINDOWS:; winnt:3.5,3.51,4.0
Platform : WINDOWS winnt
Issue type : kbprb


Last Reviewed: December 20, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.