6

アプリケーションの新しいWNDCLASS(EX)を常にビルドして登録する必要がありますか?次に、メインウィンドウにlpszClassNameを使用しますか?

ボタンやテキストボックスなどの「ボタン」や「編集」など、メインウィンドウに使用できるビルド済みのクラス名はありませんか?

4

2 に答える 2

7

ダイアログリソースからミニアプリを作成できます。CreateWindow()の代わりにCreateDialog()を使用します。ボイラープレートコードは、必要なエラーチェックを除いて次のようになります。

#include "stdafx.h"
#include "resource.h"

INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_INITDIALOG: 
        return (INT_PTR)TRUE;
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
            DestroyWindow(hDlg);
            PostQuitMessage(LOWORD(wParam)-1);
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
    HWND hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
    if (hWnd == NULL) DebugBreak();
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (int) msg.wParam;
}

これは、IDIDD_DIALOG1を使用してリソースエディターでダイアログを作成したことを前提としています。

于 2012-04-19T17:01:05.267 に答える
3

トップレベルのアプリケーションウィンドウ用に事前定義されたウィンドウクラスはありません。アプリケーションのウィンドウクラスを登録するか、ダイアログを使用する必要があります。

于 2012-04-19T16:11:06.217 に答える