3

アプリケーションでへの呼び出しRegisterClassExが失敗し、エラー コード 87「パラメーターが正しくありません」が表示されます。

memset( &m_wcx, 0, sizeof(WNDCLASSEX) );

m_wcx.cbSize = sizeof(WNDCLASSEX);  // size of structure
m_wcx.style = WS_ICONIC;            // initially minimized
m_wcx.lpfnWndProc = &WndProc;       // points to window procedure
m_wcx.cbClsExtra = 0;               // no extra class memory
m_wcx.cbWndExtra = 0;               // no extra window memory
m_wcx.hInstance = m_hInstance;      // handle to instance
m_wcx.hIcon = ::LoadIcon( NULL, IDI_APPLICATION ); // default app icon
m_wcx.hCursor = ::LoadCursor( NULL, IDC_ARROW ); // standard arrow cursor
m_wcx.hbrBackground = NULL;         // no background to paint
m_wcx.lpszMenuName = NULL;          // no menu resource
m_wcx.lpszClassName = _pwcWindowClass; // name of window class
m_wcx.hIconSm = NULL;               // search system resources for sm icon

m_atom = ::RegisterClassEx( &m_wcx );

if ( m_atom == 0 )
{
    TRACE(_T("CNotifyWindow::CNotifyWindow : Failed to register window class.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), __WFILE__, __LINE__);
    THROW(::GetLastError());
}

私が間違っていることを誰かが知っていますか?ありがとう。

4

3 に答える 3

3

WNDCLASSEX構造のstyleメンバーは、ウィンドウスタイルではなく、クラススタイルを受け入れます。つまり、そのクラスのすべてのウィンドウを最初にそのように最小化することはできません。

WS_ICONIC代わりに、dwStyle引数をCreateWindow()またはCreateWindowEx()に渡す必要があります。

于 2010-11-29T22:18:48.850 に答える
0

通常、「パラメータが正しくありません」というのは、WINAPI の言い方です。

したがって、WNDCLASSEXメンバー変数の 1 つはおそらくがらくたです。不適切なものが含まれている可能性が最も高い変数を詳しく調べることから始めます: m_wcx.hInstancem_wcx.lpfnWndProc、およびm_wcx.lpszClassName

編集:

@Johann Gerellが指摘したm_wcx.style = WS_ICONICように、これはその例です。ドキュメントには、これはクラス スタイルであると記載されていますが、ウィンドウ スタイルが送信されました。ダメ。

違いは何ですか?classC++とオブジェクトの違いはわかりますよね? Aclassは設計図のようなものです。オブジェクトは、その設計図のインスタンス化です。同じことが Window Classes & Windows にも当てはまります。ウィンドウ クラスはウィンドウを作成するための設計図であり、ウィンドウはそのウィンドウ クラスのインスタンス化です。ウィンドウ クラスには、使用する DC の種類、垂直リフレッシュのタイミングなどを指定するスタイルがあります。そのウィンドウ クラスのすべてのインスタンスに適用されるような低レベルのものです。ウィンドウにもスタイルがありますが、これらは異なります。ウィンドウ スタイルは、ウィンドウを表示するか、最小化するかなど、ウィンドウごとに指定します。したがって、RegisterClassEx はオレンジを要求し、リンゴを与えようとしました。

于 2010-11-29T22:17:16.260 に答える
0

まず、WS_ICONIC. ウィンドウクラススタイルは、ウィンドウスタイルとはまったく異なるものです。クラススタイルはそれCS_*です。

于 2010-11-29T22:17:33.197 に答える