1

Windows GUI アプリケーションに取り組んでいます。ウィンドウには 20 個のプッシュ ボタンがあります。ボタンがクリックされるたびに、新しいウィンドウを開いて情報を表示したいと考えています。何らかの情報を表示できるものであれば何でもかまいませんが、私はこれらすべてに慣れておらず、複雑なことはしたくないので、ボタンのクリックごとにポップアップ ウィンドウを作成するというアイデアを採用することにしました。

今私が直面している問題は、20 の異なるウィンドウがあるため、20 の異なるウィンドウ コールバック関数を作成する必要があるかということです。ポップアップ ウィンドウには 1 つのコントロール、つまり閉じる記号しかありませんが、そのためにも CALLBACK 関数が必要です。

私はこれを試していましたが、今ではこの考えは無意味に見えます。必要な機能を実現できる他のオプションはありますか?

助けを待っています。

4

1 に答える 1

3

すべてのウィンドウが同じように動作する必要がある場合は、すべてのポップアップ ウィンドウで共有される単一のウィンドウ プロシージャ(関数と呼んでいるもの) を作成できます。CALLBACK

ウィンドウ プロシージャは個々のウィンドウに固有である必要はありませんが、複数のウィンドウが同じウィンドウ プロシージャを共有している場合、それらは受信するすべてのメッセージに対して同じように反応します。

例えば:

// Message procedure for all pop-up windows.
LRESULT CALLBACK MyPopupWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ 
    switch (msg)
    { 
        // handle any messages you want here in order to
        //   customize the behavior of your pop-up window
    } 
    return DefWindowProc(hwnd, msg, wParam, lParam);
}

MyPopupWndProcポップアップ ウィンドウのウィンドウ クラスを登録するときに (関数を使用して) 関数へのポインターを指定し、ポップアップ ウィンドウを作成/表示するためRegisterClassExに呼び出すときに、登録されたウィンドウ クラスの名前を渡します。CreateWindowExメイン ウィンドウのボタンのどれかがクリックされます。

もちろん、テスト目的で単純なものが必要な場合は、いつでも関数を呼び出すことができることを覚えておいてくださいMessageBox! 窓口手続きや履修登録は不要です。

于 2013-07-11T08:26:23.853 に答える