代码如下:
#include <windows.h>// 函数原型int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);// WinMain 函数int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){HWND hWnd; // 主窗口句柄MSG msg; // 窗口消息WNDCLASS wc; // 窗口类if (!hPrevInstance){// 填充窗口类信息wc.style=CS_HREDRAW|CS_VREDRAW;wc.lpfnWndProc=WndProc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hInstance=hInstance;wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hbrBackground=GetStockObject(WHITE_BRUSH);wc.lpszMenuName=NULL;wc.lpszClassName="SdkDemo1";// 注册窗口类RegisterClass(&wc);}// 创建应用程序主窗口hWnd=CreateWindow ("SdkDemo1", // 窗口类名"第一个Win32 SDK应用程序", // 窗口标题WS_OVERLAPPEDWINDOW, // 窗口样式CW_USEDEFAULT, // 初始化 x 坐标CW_USEDEFAULT, // 初始化 y 坐标CW_USEDEFAULT, // 初始化窗口宽度CW_USEDEFAULT, // 初始化窗口高度NULL, // 父窗口句柄NULL, // 窗口菜单句柄hInstance, // 程序实例句柄NULL); // 创建参数// 显示窗口ShowWindow(hWnd,SW_SHOW);// 更新主窗口客户区UpdateWindow(hWnd);// 开始消息循环while (GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}// WndProc 主窗口过程LRESULT WINAPI WndProc (HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){HDC hdc;RECT rc;HPEN hPen,hPenOld;HBRUSH hBrush,hBrushOld;switch (msg){case WM_PAINT:hdc=GetDC(hWnd);GetClientRect(hWnd,&rc);hPen=CreatePen(PS_SOLID,0,RGB(0,0,0));hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0));hPenOld=SelectObject(hdc,hPen);hBrushOld=SelectObject(hdc,hBrush);Ellipse(hdc,rc.left,rc.top,rc.right,rc.bottom);SelectObject(hdc,hPenOld);SelectObject(hdc,hBrushOld);ReleaseDC(hWnd,hdc);break;case WM_DESTROY:PostQuitMessage(0);break;default:break;}return DefWindowProc(hWnd,msg,wParam,lParam);}错误如下:
Compiling...
MainFile.cpp
e:\vc++\sdkdomain1\mainfile.cpp(47) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
e:\vc++\sdkdomain1\mainfile.cpp(141) : error C2440: '=' : cannot convert from 'void *' to 'struct HPEN__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
e:\vc++\sdkdomain1\mainfile.cpp(143) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
请教了!!!!
#include <windows.h>// 函数原型int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);// WinMain 函数int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){HWND hWnd; // 主窗口句柄MSG msg; // 窗口消息WNDCLASS wc; // 窗口类if (!hPrevInstance){// 填充窗口类信息wc.style=CS_HREDRAW|CS_VREDRAW;wc.lpfnWndProc=WndProc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hInstance=hInstance;wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hbrBackground=GetStockObject(WHITE_BRUSH);wc.lpszMenuName=NULL;wc.lpszClassName="SdkDemo1";// 注册窗口类RegisterClass(&wc);}// 创建应用程序主窗口hWnd=CreateWindow ("SdkDemo1", // 窗口类名"第一个Win32 SDK应用程序", // 窗口标题WS_OVERLAPPEDWINDOW, // 窗口样式CW_USEDEFAULT, // 初始化 x 坐标CW_USEDEFAULT, // 初始化 y 坐标CW_USEDEFAULT, // 初始化窗口宽度CW_USEDEFAULT, // 初始化窗口高度NULL, // 父窗口句柄NULL, // 窗口菜单句柄hInstance, // 程序实例句柄NULL); // 创建参数// 显示窗口ShowWindow(hWnd,SW_SHOW);// 更新主窗口客户区UpdateWindow(hWnd);// 开始消息循环while (GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}// WndProc 主窗口过程LRESULT WINAPI WndProc (HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){HDC hdc;RECT rc;HPEN hPen,hPenOld;HBRUSH hBrush,hBrushOld;switch (msg){case WM_PAINT:hdc=GetDC(hWnd);GetClientRect(hWnd,&rc);hPen=CreatePen(PS_SOLID,0,RGB(0,0,0));hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0));hPenOld=SelectObject(hdc,hPen);hBrushOld=SelectObject(hdc,hBrush);Ellipse(hdc,rc.left,rc.top,rc.right,rc.bottom);SelectObject(hdc,hPenOld);SelectObject(hdc,hBrushOld);ReleaseDC(hWnd,hdc);break;case WM_DESTROY:PostQuitMessage(0);break;default:break;}return DefWindowProc(hWnd,msg,wParam,lParam);}错误如下:
Compiling...
MainFile.cpp
e:\vc++\sdkdomain1\mainfile.cpp(47) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
e:\vc++\sdkdomain1\mainfile.cpp(141) : error C2440: '=' : cannot convert from 'void *' to 'struct HPEN__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
e:\vc++\sdkdomain1\mainfile.cpp(143) : error C2440: '=' : cannot convert from 'void *' to 'struct HBRUSH__ *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
请教了!!!!
hBrushOld=(HBRUSH)SelectObject(hdc,hBrush);
#include <windows.h>// 函数原型int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);LRESULT WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);// WinMain 函数int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
HWND hWnd; // 主窗口句柄
MSG msg; // 窗口消息
WNDCLASS wc; // 窗口类
if (!hPrevInstance)
{
// 填充窗口类信息
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszClassName="SdkDemo1";
// 注册窗口类
RegisterClass(&wc);
}
// 创建应用程序主窗口
hWnd=CreateWindow ("SdkDemo1", // 窗口类名
"第一个Win32 SDK应用程序", // 窗口标题
WS_OVERLAPPEDWINDOW, // 窗口样式
CW_USEDEFAULT, // 初始化 x 坐标
CW_USEDEFAULT, // 初始化 y 坐标
CW_USEDEFAULT, // 初始化窗口宽度
CW_USEDEFAULT, // 初始化窗口高度
NULL, // 父窗口句柄
NULL, // 窗口菜单句柄
hInstance, // 程序实例句柄
NULL); // 创建参数
// 显示窗口
ShowWindow(hWnd,SW_SHOW);
// 更新主窗口客户区
UpdateWindow(hWnd);
// 开始消息循环
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// WndProc 主窗口过程LRESULT WINAPI WndProc (HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam){
HDC hdc;
RECT rc;
HPEN hPen,hPenOld;
HBRUSH hBrush,hBrushOld;
switch (msg)
{
case WM_PAINT:
hdc=GetDC(hWnd);
GetClientRect(hWnd,&rc);
hPen=CreatePen(PS_SOLID,0,RGB(0,0,0));
hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,0,0));
hPenOld=(HPEN)SelectObject(hdc,hPen);
hBrushOld=(HBRUSH)SelectObject(hdc,hBrush);
Ellipse(hdc,rc.left,rc.top,rc.right,rc.bottom);
SelectObject(hdc,hPenOld);
SelectObject(hdc,hBrushOld);
ReleaseDC(hWnd,hdc);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
break;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}