小弟刚学vc,用的时机械工业出版社的<<visual c++程序设计教程>>在编译第13页,创建
windows窗体的时候发生了问题:通过了编译,不知乍得就是看不到窗体
原码如下
#include<windows.h>LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM );//窗口函数说明int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,
   LPSTR lpszCmdLine,int nCmdShow)
{
 HWND hwnd;
 MSG Msg;
 WNDCLASS wndclass;
 char lpszClassName[]="&acute;°&iquest;&Uacute;";//窗口类名
 char lpszTitle[]="&acute;°&iquest;&Uacute;&Ecirc;&frac34;&Agrave;&yacute;&sup3;&Igrave;&ETH;ò";//窗口标题名
 wndclass.style=0;
 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=lpszTitle;
//一下为窗口类注册
 if(!RegisterClass(& wndclass))
 {
 MessageBeep(0);
 return FALSE;
 }
//创建窗口操作
 hwnd=CreateWindow(lpszClassName,lpszTitle,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 message,WPARAM wParam,
  LPARAM lParam)
{    
switch(message)
{
     case WM_DESTROY: PostQuitMessage(0);
         default:
 return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}

解决方案 »

  1.   

    do not use CW_USEDEFAULT
      

  2.   

    我该过了没用 hwnd=CreateWindow(lpszClassName,lpszTitle,WS_OVERLAPPEDWINDOW,
     100,100,
     1000,1000,
     NULL,NULL,hInstance,NULL);
      

  3.   

    WNDCLASS wndclass;
    现在不是都用 WNDCLASSEX
      

  4.   

    我也想用WNDCLASSEX不过能力有限,在线等的,解决马上结贴
      

  5.   

    wndclass.style=0;可能会有问题,我没试,你给它wndclass.style=WS_BORDER|WS_VISIBLE|WS_POPUP
    看看可以吗!
      

  6.   

    char lpszClassName[]="&acute;°&iquest;&Uacute;";//窗口类名
    char lpszTitle[]="&acute;°这两个东西要一样
    char lpszClassName[]="mywindow";
    char lpszTitle[]="mywindow";
      

  7.   


    将: 
    char lpszClassName[]="&acute;°&iquest;&Uacute;";//窗口类名放到:
    WinMain 函数的前面. 保证这个类名全局有效.
      

  8.   

    更改 wndclass.styleWS_VISIBLE | WS_OVERLAPPEDWINDOW
      

  9.   

    static char lpszClassName[]="&acute;°&iquest;&Uacute;";//窗口类名
    static char lpszTitle[]="&acute;°&iquest;&Uacute;&Ecirc;&frac34;&Agrave;&yacute;&sup3;&Igrave;&ETH;ò";//窗口标题名都放到开头处并且wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
      

  10.   

    /*
     *创建步骤:
     *-Ctrl+N
     *-点击Projects 选项卡
     *-点击Win32 Application
     *-Project name:输入工程名称,然后OK
     *-选择An empty project.
     *-点击Finish完成,再点击OK *-然后点击上面的菜单Project
     *-点击Add To Project->New...
     *-点击Files选项卡
     *-选择C++ Source File
     *-File:输入文件名称
     *-点击OK
     *-最后把代贴进去,进行编译就OK了!
     */#include "windows.h"//窗口过程函数申明
    LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);//Win32程序主函数WinMain
    int WINAPI WinMain (HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine,
                        int nCmdShow)
    {
        HWND hWnd;      // 主窗口句柄
        MSG msg;        // 窗口消息
        WNDCLASS wc;    // 窗口類

    if (!hPrevInstance)

    // 填充窗口類信息
    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 = "SdkDemo1";
    // 註冊窗口類
    RegisterClass(&wc);
    } // 創建應用程序主窗口
    hWnd=CreateWindow ("SdkDemo1",              // 窗口類名
    "第一個Win32 SDK應用程序",         // 窗口標題
    WS_OVERLAPPEDWINDOW,               // 窗口樣式
    CW_USEDEFAULT,                     // 初始化 x 坐標
    CW_USEDEFAULT,                     // 初始化 y 坐標
    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;
    RECT rc;
    HPEN hPen,hPenOld;
    HBRUSH hBrush,hBrushOld;
    switch (msg)
    {
        case WM_PAINT:
    hdc=GetDC(hWnd);
    GetClientRect(hWnd,&rc);
    hPen=CreatePen(PS_SOLID,0,RGB(0,0,0));
    hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0));
    hPenOld=(HPEN)SelectObject(hdc,hPen);
    hBrushOld=(HBRUSH)SelectObject(hdc,hBrush);
    Ellipse(hdc,rc.left,rc.top,rc.right,rc.bottom);
    SelectObject(hdc,hPenOld);
    SelectObject(hdc,hBrushOld);
    ReleaseDC(hWnd,hdc);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:break;
    }
    return DefWindowProc(hWnd,msg,wParam,lParam);
    }
      

  11.   

    wndclass.lpszClassName=lpszTitle;
    改为:
     wndclass.lpszClassName=lpszClassName;