3

CreateWindowメインウィンドウの作成に使用します。hInstanceinWNDCLASSEXは、クラスが登録されているインスタンスを指定します。だから私はそれを見つけるためhInstanceCreateWindow機能する必要があります。

CreateWindowはボタンを作成するために使用します。現在、ユーザー定義はありませんWNDCLASSEX。BUTTONWNDCLASSEXはグローバルです。しかし、私はまだ関数にを渡す必要がありhInstanceますか?なぜ、そして何を渡すのが正しいのですか?

Microsoftの例で(HINSTANCE)GetWindowLong(hMainWnd, GWL_HINSTANCE)はそうですが、私にはそれが何であるかわかりません。

何かおかしいことがあったら教えてください。

ありがとう。

4

3 に答える 3

4

CreateWindow私は2001年からのMSDNで見つけましたCreateWindowEx

hInstance

Windows 95/98 / Me: [in]ウィンドウに関連付けられるモジュールのインスタンスへのハンドル。

Windows NT / 2000 / XP:この値は無視されます。

于 2019-03-19T21:20:51.640 に答える
1

しかし、それでもhInstanceを関数に渡す必要がありますか?なぜ、そして何を渡すのが正しいのですか?

理由については、(少なくともwinapiの観点からは)それ以外のすべてを取り、他のすべてのパラメーターがまだ使用されているときに親または何かを使用するまったく新しい関数を作成することは少し無意味です。

個人的に渡すのに適切な値が何であるかはわかりませんが、を使用しますGetModuleHandle(nullptr)。これは、に渡されるインスタンスと同等である必要がありますWinMain。また、親ウィンドウの作成に使用する場合は、Microsoftの例で使用されているもの(親ウィンドウの作成に使用されるインスタンスを取得します)と同じになります。親として別のアプリケーションのウィンドウを使用する場合、違いが生じます。私が使用している他の主なオプションはnullptr/NULLです。これは、使用するたびに前述のオプションと同じように機能します。

NULL今日の使用とアプリケーションの間に微妙な違いがある場合HINSTANCEは、知りたいのですが、どちらもウィンドウに子コントロールを作成するために正常に機能するはずです。

于 2013-03-17T16:16:45.393 に答える
1

lpClassNameウィンドウを作成するときは、の最初のパラメーターに文字列()を使用してインスタンスを作成するクラスを指定しますCreateWindow

hInstance参照される複数のDLLに同じ名前のクラスが含まれている場合の識別に使用されます。

詳細については、https://devblogs.microsoft.com/oldnewthing/20050418-59/?p=35873を参照してください。

于 2019-11-20T10:56:24.947 に答える