帮忙看个win32程序: 
// 3_3.cpp : Defines the entry point for the application.
////#include "stdafx.h"
#include <windows.h>
#include <stdio.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
static TCHAR szAppName[] = TEXT("DisplayWithScrollBar");
static TCHAR szClassName[] = TEXT("DisplayWithScrollBarClass");
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 = szClassName;//注册窗口类
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
return 0;
}//创建窗口
hwnd = CreateWindow(
szClassName,
TEXT("Display Source Text With Scroll Bar Program"),
WS_OVERLAPPEDWINDOW,//|WS_VSCROLL,
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_CREATE:return 0;
case WM_PAINT:return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
/*
我运行结果:出来一个窗口,大概0。5秒后,消失了,why?
*/

解决方案 »

  1.   

    该程序没有任何问题。除非是
    你的操作系统不是NT架构的,
    就从这里退出了:
    if(!RegisterClass(&wndclass))
    {
    MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
    return 0;
    }
      

  2.   

    摘自<<windows程式设计>>
    ///////////////////////////////////////////////////////////////
    //
    //
    ///////////////////////////////////////////////////////////////
    在处理WM_PAINT讯息时,使用这种方法。它涉及BeginPaint和EndPaint两个函式,这两个函式需要视窗代号(作为参数传给视窗讯息处理程式)和PAINTSTRUCT结构的变数(在WINUSER.H表头档案中定义)的地址为参数。Windows程式写作者通常把这一结构变数命名为ps并且在视窗讯息处理程式中定义它:PAINTSTRUCT ps ;
    在处理WM_PAINT讯息时,视窗讯息处理程式首先呼叫BeginPaint。BeginPaint函式一般在准备绘制时导致无效区域的背景被擦除。该函式也填入ps结构的栏位。BeginPaint传回的值是装置内容代号,这一传回值通常被保存在叫做hdc的变数中。它在视窗讯息处理程式中的定义如下:HDC hdc ;
    HDC资料型态定义为32位元的无正负号整数。然後,程式就可以使用需要装置内容代号的TextOut等GDI函式。呼叫EndPaint即可释放装置内容代号。一般地,处理WM_PAINT讯息的形式如下:case WM_PAINT:
       hdc = BeginPaint (hwnd, &ps) ; 
              使用GDI函式
       EndPaint (hwnd, &ps) ;
       return 0 ;
    在处理WM_PAINT讯息时,必须成对地呼叫BeginPaint和EndPaint。如果视窗讯息处理程式不处理WM_PAINT讯息,则它必须将WM_PAINT讯息传递给Windows中DefWindowProc(内定视窗讯息处理程式)。DefWindowProc以下列代码处理WM_PAINT讯息:case WM_PAINT:
    BeginPaint (hwnd, &ps) ;
    EndPaint (hwnd, &ps) ;
      return 0 ;
    这两个BeginPaint和EndPaint呼叫之间中没有任何叙述,仅仅使先前无效区域变为有效。但以下方法是错误的:case WM_PAINT:
    return 0 ;   // WRONG !!!
    Windows将一个WM_PAINT讯息放到讯息伫列中,是因为显示区域的一部分无效。如果不呼叫BeginPaint和EndPaint(或者ValidateRect),则Windows不会使该区域变为有效。相反,Windows将发送另一个WM_PAINT讯息,且一直发送下去。///////////////////////////////////////////////////////////////
    //
    //  虽然是这样子说,但是,你的程序在我的机子上跑得很正常(XP)
    //但是,调试的结果却是他所说的所那样"相反,Windows将发送另一个W
    //M_PAINT讯息,且一直发送下去。"
    //  这样看来,并不是在注册窗口类时创建不成功!
    //
    ///////////////////////////////////////////////////////////////
      

  3.   

    你是新建一个简单的win32工程吧,
    //#include "stdafx.h"这个你有没有注释掉?
    我注释了,就出现了一个错误
      

  4.   

    奇怪阿!
    我新建了一个win32简单工程后,把这些代码复制,也是可以运行正常。
    但同样的代码在原来的里面就不行。
      

  5.   

    楼上的,会不会是在选择项目时选了win32 console application. 啊,
    我这边是可以运行的.