一个WINDOWS编程C++程序,就剩下一个错误找不到

来源:百度知道 编辑:UC知道 时间:2024/09/21 15:49:19
//Windows.h文件中包含应用程序中所需的数据类型和数据结构的定义
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//___________以下初始化窗口类________________
int WINAPI WinMain(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;//窗口处理函数为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

窗口类的定义那段

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景为白色

这句,在原句中加上(HBRUSH),强制转换返回类型,这个错误在好几个书上都出现(好像是老一点的书吧··)

wndclass.cbSize = sizeof(WNDCLASS);
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;
wndclass.hIconSm=LoadIcon(NULL,IDI_APPLICATION);

GetStockOjbect得到的是指针类型,强制转换下就行了
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

崩。。。强转就行。。。
void*能转成任何的指针,直接在前面加(HBRUSH)就完了

对头