Back to Computers & Modding

Programming Windows Charles Petzold Code Help

vivoOP
#1
#include <stdio.h>
#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, WPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)

{
    static TCHAR szAppName[] = TEXT ("HelloWin");
    HWND  hwnd;
    MSG msg;
    WNDCLASS wndclass;

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

    if (!RegisterClass (&wndclass))
    {
       MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR);
    }
    hwnd = CreateWindow (szAppName,
                        TEXT ("The Hello Program"),
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        NULL,
                        NULL,
                        hInstance,
                        NULL);
                        ShowWindow (hwnd, iCmdShow);
                        UpdateWindow (hwnd);
                        while (GetMessage (&msg, NULL, 0, 0))
                        {TranslateMessage(&msg);
                        DispatchMessage (&msg);
                        }
                        return msg.wParam;

}
LRESULT CALLBACK Wndproc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC  hdc;
    PAINTSTRUCT ps;
    RECT  rect;

    switch (message)
    /*case WM_CREATE;
    PlaySound (TEXT("hellowin.wav"), NULL, SND_FILENAME|SND_ASYNCE);
    return 0; */
    {case WM_PAINT:
    hdc = BeginPaint (hwnd,&ps);
    GetClientRect (hwnd, &rect);
    DrawText (hdc, TEXT ("Hello, Win 98!"), -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
    EndPaint (hwnd, &ps);
    return 0;

    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    }
    return DefWindowProc (hwnd,message, wParam, lParam);
}
Now all the code works, with the exception of this:
wndclass.lpfnWndProc = WndProc ;
and I think it is because of a different os (since Mr. Petzold wrote under win 98/NT) and I am using Win Vista. So what would be the replacement? And is it because it is a long pointer? Thanks
Showing posts 1–1 of 1 · This discussion is archivedBack to top