///////////////窗口程序示例//////////////////
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口说明
/////////////////以下初始化窗口类////////////////////////
int WINAPIWinMain(HINSTANCE hInstance, //WinMain函数说明)
  HINSTANCE hPrevInst,
  LPSTR lpszCmdLine,
  int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口"; //窗口类名
char lpszTitle[]="My-Windows"; //窗口类的定义
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 = GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName;//-------------------------------------------------------
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);
}/////////////////////////////////////////////////////出错///////////////
--------------------Configuration: wbegin - Win32 Debug--------------------
Compiling...
wbegin.cpp
D:\c++ program\begin\wbegin.cpp(23) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
        Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Error executing cl.exe.

解决方案 »

  1.   

    ///////////////窗口程序示例//////////////////
    #include <windows.h>
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口说明
    /////////////////以下初始化窗口类////////////////////////
    int WINAPIWinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInst,
    LPSTR lpszCmdLine,
    int nCmdShow)
    {
    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass;
    char lpszClassName[]="窗口"; //窗口类名
    char lpszTitle[]="My-Windows"; //窗口类的定义
    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=lpszClassName;//-------------------------------------------------------
    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);
    break;
    default:
    return DefWindowProc(hwnd,message,wParam,lParam);
    }
    return(0);
    }
      

  2.   

    在//窗口类的定义
    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 = GetStockObject(WHITE_BRUSH); 
    // 这一行换成下面的代码 wndclass.lpszMenuName=NULL;
    wndclass.lpszClassName=lpszClassName;:::
    LOGBRUSH lgbr; 
    lgbr.lbStyle=BS_SOLID; 
    lgbr.lbColor=RGB(255,255,255); 
    lgbr.lbHatch=0; 
    wndClass.hbrBackground=CreateBrushIndirect(&lgbr); 
      

  3.   

    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    -----------------
      

  4.   

    编译没有问题,但是运行时:--------------------Configuration: wbegin - Win32 Debug--------------------
    Linking...
    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/wbegin.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.wbegin.exe - 2 error(s), 0 warning(s)
      

  5.   

    to psusong and  mostneed:
      上面的代码是不是建立一个C++源文件就可以编译运行,而不需要建立工程????
      

  6.   

    当然要你运行后会提示你要不要建立工程,你同意vc就会自动帮你建一个console工程。然后你修改一下设置就可以运行了。你这类问题今天我遇到好几个,建议去看看:
    http://expert.csdn.net/Expert/topic/1372/1372426.xml?temp=2.547854E-02
      

  7.   

    LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main菜单project->settings...,在project settings对话框中选link页,在下面的project options中把/subsystem:console改为/subsystem:windows
      

  8.   

    新建一个C++文件,然后把下面这段代码COPY进出。#include <windows.h>
    LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口说明
    /////////////////以下初始化窗口类////////////////////////
    int WINAPI WinMain(HINSTANCE hInstance, //WinMain函数说明)
      HINSTANCE hPrevInst,
      LPSTR lpszCmdLine,
      int nCmdShow)    //WINAPI WinMain 要分开
    {
    HWND hwnd;
    MSG Msg;
    WNDCLASS wndclass;
    char lpszClassName[]="窗口"; //窗口类名
    char lpszTitle[]="My-Windows"; //窗口类的定义
    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=lpszClassName;//-------------------------------------------------------
    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);
    }注意下面的东西要改正过来:
    菜单project->settings...,在project settings对话框中选link页,在下面的project options中把/subsystem:console改为/subsystem:windows然后按F5,按照它的步骤做就行了。
      

  9.   

    再次多谢everyone.
    不过我还是知其然,不知所以然。 
    以后努力学!