• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

两个未知的错误

juniosan01 2009-08-24 11:34:51

#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);




...全文
77 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xylicon 2009-08-24
#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对照一下吧。
回复
youyifang 2009-08-24
第二个,myWC.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
第一个,将定义的int 改成LRESULT看看
回复
fandh 2009-08-24
参数错误!第一个好像是函数的返回值类型不对
回复
雪影 2009-08-24
INT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
你的窗口函数定义不对

LRESULT CALLBACK WindowProc( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);

myWC.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2009-08-24 11:34
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……