Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Could the fact that you're requesting fullscreen be causing a problem? <code>w = new cog::Window(100, 100, 16, TRUE);</code></p> <p>If it helps, this works in my code base:</p> <pre><code>HWND impl::window_impl::create_window_( window_impl* window // associated window object ) { auto const INSTANCE = ::GetModuleHandleW(L""); WNDCLASSEXW const wc = { sizeof(WNDCLASSEXW), CS_OWNDC | CS_HREDRAW | CS_VREDRAW, window_impl::top_level_wnd_proc_, 0, 0, INSTANCE, nullptr, ::LoadCursorW(nullptr, MAKEINTRESOURCE(IDC_ARROW)), nullptr, nullptr, CLASS_NAME, nullptr }; ::RegisterClassExW(&amp;wc); // ignore return value auto const result = ::CreateWindowExW( 0, CLASS_NAME, L"window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND)nullptr , (HMENU)nullptr, INSTANCE, window ); return result; } </code></pre> <p>[edit] I think your call to CreateWindowExW has the params in the wrong order -- specifically the instance paramater. Do you compile with STRICT on? It should detect this kind of problem.</p> <p>[edit] Not directly related, but your implementation won't work when compiled as 64bit code, and it doesn't check for possible errors -- you should use something like:</p> <pre><code>//-------------------------------------------------------------------------- //! Get the userdata for the window given by @c hwnd (our window object). //! @throw bklib::platform::windows_exception //-------------------------------------------------------------------------- impl::window_impl* get_window_ptr(HWND hwnd) { ::SetLastError(0); auto const result = ::GetWindowLongPtrW(hwnd, GWLP_USERDATA); if (result == 0) { auto const e = ::GetLastError(); if (e) { BOOST_THROW_EXCEPTION(bklib::platform::windows_exception() &lt;&lt; bklib::platform::windows_error_code(e) ); } } return reinterpret_cast&lt;impl::window_impl*&gt;(result); } //-------------------------------------------------------------------------- //! Set the userdata for the window given by @c hwnd to be our //! window object. //! @throw bklib::platform::windows_exception //-------------------------------------------------------------------------- void set_window_ptr(HWND hwnd, impl::window_impl* ptr) { ::SetLastError(0); auto const result = ::SetWindowLongPtrW(hwnd, GWLP_USERDATA, reinterpret_cast&lt;LONG_PTR&gt;(ptr)); if (result == 0) { auto const e = ::GetLastError(); if (e) { BOOST_THROW_EXCEPTION(bklib::platform::windows_exception() &lt;&lt; bklib::platform::windows_error_code(e) ); } } } </code></pre> <p>[edit] More code in case it helps</p> <pre><code>//------------------------------------------------------------------------------ //! Top level window procedure which forwards messages to the appropriate //! impl::window_impl instance. //! @throw noexcept //! Swallows all exceptions at the API boundary. //------------------------------------------------------------------------------ LRESULT CALLBACK impl::window_impl::top_level_wnd_proc_( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) try { // set the instance pointer for the window given by hwnd if it was just created if (msg == WM_NCCREATE) { auto const cs = reinterpret_cast&lt;CREATESTRUCTW const*&gt;(lParam); auto const window_ptr = reinterpret_cast&lt;window_impl*&gt;(cs-&gt;lpCreateParams); set_window_ptr(hwnd, window_ptr); } // the window object to forward the message to auto const window = get_window_ptr(hwnd); if (window) { return window-&gt;window_proc_(hwnd, msg, wParam, lParam); } else { // it's possible we will receive some messages beofre WM_NCCREATE; // use the default handler return ::DefWindowProcW(hwnd, msg, wParam, lParam); } } catch (std::exception&amp;) { ::PostQuitMessage(-1); return 0; } catch (...) { ::PostQuitMessage(-1); return 0; } //------------------------------------------------------------------------------ //! Called by the top level window proc. Dispatches messages to their //! appropriate handler function. //------------------------------------------------------------------------------ LRESULT impl::window_impl::window_proc_( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { return ::DefWindowProcW(hwnd, msg, wParam, lParam); } //------------------------------------------------------------------------------ void impl::window_impl::create() { handle_ = create_window_(this); } //------------------------------------------------------------------------------ void impl::window_impl::show(bool visible) { ::ShowWindow(handle_, SW_SHOWDEFAULT); ::InvalidateRect(handle_, nullptr, FALSE); ::UpdateWindow(handle_); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload