■ HSPは 初心者にやさしいプログラミングツールです。

たとえばウィンドウをひとつ表示させて Hello Windows と

いう文字を表示させるプログラムを C++ 言語で作る場合、

// Windows programming


#include <windows.h>
#include <string.h>


// Plottype

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

#pragma argsused

// Entry point

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow)
{
	char* className = "Windows98";

    // Class

    WNDCLASS wc;

    wc.style				= CS_VREDRAW|CS_HREDRAW;
	wc.lpfnWndProc			= (WNDPROC)WndProc;
    wc.cbClsExtra			= 0;
    wc.cbWndExtra			= 0;
    wc.hInstance			= hInstance;
    wc.hIcon				= LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor				= LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground		= (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName			= NULL;
    wc.lpszClassName		= className;

	RegisterClass(&wc);

    // Create Window

    HWND toplevel = CreateWindowEx(
    								NULL,
                                    className,
                                    "Sample",
                                    WS_OVERLAPPEDWINDOW,
                                    CW_USEDEFAULT,
                                    CW_USEDEFAULT,
                                    180,
                                    100,
                                    NULL,
                                    NULL,
                                    hInstance,
                                    NULL
                                   );

	// Show Window

    ShowWindow(toplevel, cmdShow);

    // Update Window

    UpdateWindow(toplevel);

    // Message loop

    MSG msg;

    while(GetMessage(&msg, NULL, NULL, NULL))
    {
     	TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return	msg.wParam;
}

// Window procedure

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
    {
        	case WM_PAINT:
            {
            	char* text = "Hello Windows";

            	//

            	PAINTSTRUCT ps;
            	HDC hdc = BeginPaint(hwnd, &ps);

            	//

            	TextOut(hdc, 25, 25, text, strlen(text));

            	//

            	EndPaint(hwnd, &ps);
            }
            break;

            case WM_DESTROY :

            	PostQuitMessage(0);

            break;

            default:

            	return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return NULL;
}

こんな冗長な記述をしないと目的の結果が得られません。 ちなみに、これをHSPを使って書くと、

       mes "Hello Windows"
       stop

のようにわずかな記述でほぼ同等の処理が可能です。

戻る