本帖最后由 xianglitian 于 2010-09-17 20:27:51 编辑

解决方案 »

  1.   

    /*
    *SdkMain.cpp³ÌÐòÎļþ
    */#include <Windows.h>
    #include "string.h"int WINAPI WinMain (HINSTANCE hInst, HINSTANCE PpreInst, LPSTR lpszCmdline, int cmdShow);
    LRESULT WINAPI WndProc (HWND,UINT, WPARAM, LPARAM);int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    HWND hWnd; //Ö÷´°¿Ú¾ä±ú
    MSG msg; //´°¿ÚÏûÏ¢
    WNDCLASS wc; //´°¿ÚÀà //Ìî³ä´°¿ÚÀàÐÅÏ¢
    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.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = _T("SDK");
    //×¢²á´°¿ÚÀà
    if(!RegisterClass (&wc))
    {
    return -1;
    } //´´½¨Ó¦ÓóÌÐòÖ÷´°¿Ú
    hWnd = CreateWindow (_T("SDK"),
    _T("Win32SDKÓ¦ÓóÌÐòʵÀý"),
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);
    //ÏÔʾ´°¿Ú
    ShowWindow(hWnd,SW_SHOW);
    //¸üÐÂÖ÷´°¿Ú¿Í»§Çø
    UpdateWindow(hWnd);
    //¿ªÊ¼ÏûϢѭ»·
    while (GetMessage(&msg, NULL, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return msg.wParam;
    }
    //WndProc Ö÷´°¿Ú¹ý³Ì¡ª¡ª´¦Àí´°¿ÚÖеĸ÷ÖÖʼþ
    LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam)
    {
    HDC hDC;
    switch(msg)
    {
    case WM_PAINT:
    hDC = GetDC(hWnd);

    TextOut(hDC, 10,100, _T("Hello World!"), _tcslen(_T("Hello World!")));
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    break;
    }
    return DefWindowProc(hWnd, msg, wparam, lparam);
    }
      

  2.   

    还有
    CreateWindow (( LPCTSTR )"Hello World!",
    ( LPCTSTR )"Win32SDK应用程序实例",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);
    改为:
    CreateWindow (( LPCTSTR )"SDK",
    ( LPCTSTR )"Win32SDK应用程序实例",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);
      

  3.   

    分别修改如下:1. CreateWindow (( LPCTSTR )"Hello World!", 
     改为
       CreateWindow (( LPCTSTR )"SDK",
    2.在使用wc之前,把结构体全初始化为零,这样不填写的域 全为零,避免出错:
       RtlZeroMemory(&wc,sizeof(WNDCLASS));
    3. 修改 WndProc   
    LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam)
    {
        HDC hDC;
        switch(msg)
        {
        case WM_PAINT:
            hDC = GetDC(hWnd);
            
            TextOut(hDC, 10,100, _T("Hello World!"), _tcslen(_T("Hello World!")));
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, msg, wparam, lparam);    }   return 0;
        } 至此,程序可以运行了.
      

  4.   

    CreateWindow()第一个参数是你注册的窗口类名,就是你wc的最后一个字段值,还有一个就是GetDC后要ReleaseDC的,DC使用完后要释放