Microsoft Visual C/C++ 6.0のコードにSoftAdを組み込む例を示します。他の環境では一部を変更する必要があるかもしれません。SoftAd.hとSoftAd.libを使用します。

Hello.c

#include <windows.h>
#include "SoftAd.h"

#define FC_EXIT 100
#define FC_AD   200  // 他のメニュー項目と重ならない任意のメニュー識別子

LRESULT CALLBACK WndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam );

int WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, char* cmdlin, int showFlag )
{
    static char className[] = "HelloClass";
    WNDCLASSEX wc;
    HMENU hMenu;
    HWND hwnd;
    MSG msg;

    memset( &wc, 0, sizeof( wc ) );
    wc.cbSize = sizeof( wc );
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInst;
    wc.lpszClassName = className;
    wc.style = CS_HREDRAW|CS_VREDRAW;
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
    RegisterClassEx( &wc );

    hMenu = CreateMenu();
    InsertMenu( hMenu, 0, MF_BYPOSITION, FC_EXIT, "終了(X)" );

    hwnd = CreateWindow(
        className, "Hello", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, hMenu, hInst, NULL );
    ShowWindow( hwnd, showFlag );
    UpdateWindow( hwnd );
    SA_Initialize( hwnd, NULL, FC_AD, <SoftID> );
    // 初期化。<SoftID> には、ソフトウェア登録時に提供されたID(数値)を指定します。
    // この初期化はWM_CREATEハンドラ内で行うこともできます。

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

    SA_Cleanup();  // 後始末
    return msg.wParam;
}

LRESULT CALLBACK WndProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam )
{
    LRESULT res = 0;
    switch( iMsg )
    {
        case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint( hwnd, &ps );
            RECT rc;
            GetClientRect( hwnd, &rc );
            DrawText( hdc, "Hello World!", -1, &rc, DT_CENTER|DT_VCENTER|DT_SINGLELINE );
            EndPaint( hwnd, &ps );
            break;
        }
        case WM_COMMAND:
        {
            int fc = LOWORD( wParam );
            if ( fc == FC_EXIT )
                PostQuitMessage( 0 );
            break;
        }
        case WM_DESTROY:
            PostQuitMessage( 0 );
            break;
        case WM_MEASUREITEM:
            SA_InitMenuItem( (MEASUREITEMSTRUCT*)lParam );  // オーナ描画メッセージを転送
            break;
        case WM_DRAWITEM:
            SA_DrawMenuItem( (DRAWITEMSTRUCT*)lParam );  // オーナ描画メッセージを転送
            break;
        // 他にもオーナー描画項目がある場合、上の2つのハンドラでは、構造体メンバの
        // CtlTypeとCtlIDを使ってメッセージ送付先項目を判別してください。
        default:
            res = DefWindowProc( hwnd, iMsg, wParam, lParam );
    }
    return( res );
}

コンパイルとリンク

cl /c Hello.c
link Hello.obj -SUBSYSTEM:WINDOWS user32.lib gdi32.lib SoftAd.lib

戻る


SoftAd  Copyright © Tama Software Ltd.