768540 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

さすらいのプログラマ

ADLライブラリ - ソース比較(1)

ADLライブラリのMWL(Main Window Library)を使った場合と
使わない場合のソースの比較を紹介します。

【ADLを使わない場合】

#include<windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) {
    WNDCLASS wc;
    MSG msg;
    HWND hWnd;

    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "TEST";

    if(!RegisterClass(&wc)) return -1;

    hWnd = CreateWindow("TEST", "TEST",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        NULL, NULL, hInstance, NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    switch(uMsg) {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }

    return 0;
}

【ADLを使わない場合】

#include<windows.h>
#include<ADL10.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) {
    LPMWL lpmwl;

    lpmwl = MWLCreate(hInstance, "TEST", "TEST");
    MWLRegisterClass(lpmwl);
    MWLShowWindow(lpmwl);
    MWLLoop(lpmwl);
    MWLRelease(lpmwl);

    return 0;
}

行数だけで比較するとかなり、シンプルになっていると思う。


Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.