资源描述:
《创建窗口的代码及分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#includeLRESULTCALLBACKWinSunProc(HWNDhwnd,//handletowindowUINTuMsg,//messageidentifierWPARAMwParam,//firstmessageparameterLPARAMlParam//secondmessageparameter);intWINAPIWinMain(HINSTANCEhInstance,//handletocurrentinstanceHINSTANCEhPrevInstance,//handletoprevi
2、ousinstanceLPSTRlpCmdLine,//commandlineintnCmdShow//showstate){WNDCLASSwndcls;wndcls.cbClsExtra=0;wndcls.cbWndExtra=0;wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);wndcls.hInstance=hInstance;wndcls
3、.lpfnWndProc=WinSunProc;wndcls.lpszClassName="……";wndcls.lpszMenuName=NULL;wndcls.style=CS_HREDRAW
4、CS_VREDRAW;//“
5、”表示或者,“&~”在原有特征中去掉某特征;RegisterClass(&wndcls);HWNDhwnd;hwnd=CreateWindow("……","……",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOWNORMAL);Upd
6、ateWindow(hwnd);MSGmsg;while(GetMessage(&msg,NULL,0,0))//若第二个参数为hwnd则只对hwnd处理,NULL对所有消息处理//必须设为NULL,否则死循环,机器变慢;{TranslateMessage(&msg);DispatchMessage(&msg);//该步骤执行回调函数WinSunProc;}//循环return0;//或者returnmsg.wParam;}LRESULTCALLBACKWinSunProc(HWNDhwnd,//handletowindow那个窗口UINTuMsg,//messagei
7、dentifierWPARAMwParam,//firstmessageparameterLPARAMlParam//secondmessageparameter){HPENhpen;HPENholdpen;switch(uMsg){caseWM_CHAR:charszChar[20];sprintf(szChar,"charis%d",wParam);//将字符串和int型连接,赋给szChar;MessageBox(hwnd,szChar,"weixin",0);break;caseWM_LBUTTONDOWN:MessageBox(hwnd,"mouseclick
8、ed","weixin",0);HDChdc;hdc=GetDC(hwnd);//用hdc保存GetDc函数返回的与特定窗口相关联的句柄,指定画布;hpen=CreatePen(PS_SOLID,3,RGB(255,0,0));//创建画笔,RGB红绿蓝参数;holdpen=(HPEN)SelectObject(hdc,hpen);//将hpen和hdc联系,保存返回值;Ellipse(hdc,100,100,200,200);//实现左击画一个内切圆;SelectObject(hdc,holdpen);//保存,恢复以前的默认值;TextOut(hdc,0,50,"c
9、omputerprogramingtraining",strlen("computerprograming"));//在指定位置输出文字;ReleaseDC(hwnd,hdc);//使用完后释放资源,否则引起内存泄露;break;caseWM_PAINT://当部分窗口无效时重绘窗口,HDChDC;//定义变量hdcPAINTSTRUCTps;hDC=BeginPaint(hwnd,&ps);//获得上下文的句柄,(窗口,用于接收绘制信息的结构体指针);TextOut(hDC,0,0,"hello",strlen("hello"));En