#include <windows.h>                      // 头文件INT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
// 窗口函数声明,这一函数将处理发往应用程序窗口的各种消息
char szClassName[]="windowclass1";        // 窗体结构的名称
char szAppTitle[]="chen";                 // 窗口的标题
INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR 
   lpszCmdParam,INT nCmdShow)// WinMain()函数的定义
{
  HWND hMainWnd;                          // 窗口句柄
  MSG msg;                                // 消息结构体
  WNDCLASS myWC;                          // 窗口结构体  if(!hPrevInstance)                      // hPrevInstance表示前一应用程序实例句柄,
                                      // 这一语句的作用是判断是否已有应用程序的
  // 的实例在运行// 应用程序在建立窗口之前,应先规定所要建立的窗口的特征,下面的一系列语句通过给窗口
// 结构体的数据成员赋值来规定所要建立的窗口的特征
  {
  myWC.style=CS_HREDRAW|CS_VREDRAW;   // 窗口风格
  myWC.lpfnWndProc=WndProc;           // 本窗口的消息处理函数(窗口函数)
  myWC.cbClsExtra=0;                  // 附加参数
  myWC.cbWndExtra=0;                  // 附加参数
  myWC.hInstance=hInstance;           // 当前应用程序实例句柄
  myWC.hIcon=LoadCursor(NULL,IDI_APPLICATION);
                                      // 窗口图标
  myWC.hbrBackground=GetStockObject(WHITE_BRUSH);
                                      // 窗口背景色
  myWC.lpszMenuName=NULL;             // 窗口菜单
  myWC.lpszClassName=szClassName;     // 给窗体结构体命名
                                      // CreateWindow()函数将根据窗口结构体
                                      // 的名称来建立窗口
  RegisterClass(&myWC);               // 注册窗口  }  hMainWnd=CreateWindow(szClassName,      // 窗体结构体的名称
                    szAppTitle,       // 窗口的标题
WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口
// 下面四个参数代表窗口左上角x,y坐标和窗口的宽度与高度,都使用默认值
                        CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
// 下面参数分别为父窗口句柄、窗口菜单句柄、应用程序实例句柄和附加参数
                        NULL,NULL,hInstance,NULL);
  ShowWindow(hMainWnd,SW_SHOWMAXIMIZED);  // 显示最大化窗口
  UpdateWindow(hMainWnd);                 // 更新窗口
// 下面用While()循环来建立消息循环
  while(GetMessage(&msg,NULL,0,0))        // 获取消息,填充msg结构体
  {
  TranslateMessage(&msg);             // 翻译键盘消息
  DispatchMessage(&msg);              // 向窗口函数发送消息,让窗口函数处理
  }
  return msg.wParam;
}INT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam)
{                                         // 窗口函数定义
  char messageleft[]="the left button have been pushed";
  char messageright[]="the right button have been pushed";
  switch(message)                         // 判定消息标识符
  {
     case WM_RBUTTONDOWN:
{
       MessageBox(GetFocus(),messageright,"chen",MB_OK|MB_ICONINFORMATION);
   break;
}
 case WM_LBUTTONDOWN:
{
       MessageBox(GetFocus(),messageleft,"chen",MB_OK|MB_ICONINFORMATION);
   break;
}
 case WM_DESTROY:                     // 关闭应用程序窗口时发出的消息
{
PostQuitMessage(0);               // 发出WM_QUIT消息,结束应用程序
return 0;
}
 default :
 break;
  }  return DefWindowProc(hMainwnd,message,wParam,lParam);
                                          // 其他没有处理的消息交给Windows做默认处理
}--------------------Configuration: Project4_2 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
D:\Visual C++6.0程序设计\Project4_2\Project4_2\Cpp1.cpp(23) : error C2440: '=' : cannot convert from 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
D:\Visual C++6.0程序设计\Project4_2\Project4_2\Cpp1.cpp(29) : 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.Project4_2.exe - 2 error(s), 0 warning(s)提示错误的是以下两个
myWC.lpfnWndProc=WndProc;           // 本窗口的消息处理函数(窗口函数)
myWC.hbrBackground=GetStockObject(WHITE_BRUSH);

解决方案 »

  1.   

    INT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
    你的窗口函数定义不对LRESULT CALLBACK WindowProc(          HWND hwnd,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam
    );myWC.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); 
      

  2.   

    第二个,myWC.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); 
    第一个,将定义的int 改成LRESULT看看
      

  3.   

    #include <windows.h>                      // 头文件LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
    // 窗口函数声明,这一函数将处理发往应用程序窗口的各种消息
    char szClassName[]="windowclass1";        // 窗体结构的名称
    char szAppTitle[]="chen";                 // 窗口的标题
    INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR 
                       lpszCmdParam,INT nCmdShow)// WinMain()函数的定义
    {
    HWND hMainWnd;                          // 窗口句柄
    MSG msg;                                // 消息结构体
    WNDCLASS myWC;                          // 窗口结构体

    if(!hPrevInstance)                      // hPrevInstance表示前一应用程序实例句柄,
    // 这一语句的作用是判断是否已有应用程序的
    // 的实例在运行

    // 应用程序在建立窗口之前,应先规定所要建立的窗口的特征,下面的一系列语句通过给窗口
    // 结构体的数据成员赋值来规定所要建立的窗口的特征
    {
    myWC.style=CS_HREDRAW|CS_VREDRAW;   // 窗口风格
    myWC.lpfnWndProc=WndProc;           // 本窗口的消息处理函数(窗口函数)
    myWC.cbClsExtra=0;                  // 附加参数
    myWC.cbWndExtra=0;                  // 附加参数
    myWC.hInstance=hInstance;           // 当前应用程序实例句柄
    myWC.hIcon= LoadCursor(NULL,IDI_APPLICATION);
    // 窗口图标
    myWC.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
    // 窗口背景色
    myWC.lpszMenuName=NULL;             // 窗口菜单
    myWC.lpszClassName=szClassName;     // 给窗体结构体命名
    // CreateWindow()函数将根据窗口结构体
    // 的名称来建立窗口
    RegisterClass(&myWC);               // 注册窗口

    }

    hMainWnd=CreateWindow(szClassName,      // 窗体结构体的名称
    szAppTitle,       // 窗口的标题
    WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口
    // 下面四个参数代表窗口左上角x,y坐标和窗口的宽度与高度,都使用默认值
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    // 下面参数分别为父窗口句柄、窗口菜单句柄、应用程序实例句柄和附加参数
    NULL,NULL,hInstance,NULL);
    ShowWindow(hMainWnd,SW_SHOWMAXIMIZED);  // 显示最大化窗口
    UpdateWindow(hMainWnd);                 // 更新窗口
    // 下面用While()循环来建立消息循环
    while(GetMessage(&msg,NULL,0,0))        // 获取消息,填充msg结构体
    {
    TranslateMessage(&msg);             // 翻译键盘消息
    DispatchMessage(&msg);              // 向窗口函数发送消息,让窗口函数处理
    }
    return msg.wParam;
    }LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam)
    {                                         // 窗口函数定义
    char messageleft[]="the left button have been pushed";
    char messageright[]="the right button have been pushed";
    switch(message)                         // 判定消息标识符
    {
    case WM_RBUTTONDOWN:
    {
    MessageBox(GetFocus(),messageright,"chen",MB_OK|MB_ICONINFORMATION);
    break;
    }
    case WM_LBUTTONDOWN:
    {
    MessageBox(GetFocus(),messageleft,"chen",MB_OK|MB_ICONINFORMATION);
    break;
    }
    case WM_DESTROY:                     // 关闭应用程序窗口时发出的消息
    {
    PostQuitMessage(0);               // 发出WM_QUIT消息,结束应用程序
    return 0;
    }
    default :
    break;
    }

    return DefWindowProc(hMainwnd,message,wParam,lParam);
    // 其他没有处理的消息交给Windows做默认处理
    }改成这样,lz对照一下吧。