类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
#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 nShowCmd)
{
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,
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);
}
上面是个Win 32 SDK的一个例程,思路能明白,因本人初学,望大侠指点一二。但是编译时出了下面的结果:
--------------------Configuration: SdkDemo1 - Win32 Debug--------------------
Compiling...
winmain.cpp
C:\Documents and Settings\……\桌面\winshell50src\temp\SdkDemo1\winmain.cpp(70) : error C2440: = : cannot convert from void * to struct HPEN__ *
Conversion from void* to pointer to non-void requires an explicit cast
C:\Documents and Settings\……\桌面\winshell50src\temp\SdkDemo1\winmain.cpp(71) : 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.
winmain.obj - 2 error(s), 0 warning(s)
网友回答:
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
hPenOld=(HPEN)SelectObject(hdc,hPen);
hBrushOld=(HBRUSH)SelectObject(hdc,hBrush);