标题:
[
VC++
]
visualc++经典易懂全视频教程之例程二源程序
[打印本页]
作者:
lyyjl
时间:
2009-7-2 23:29
标题:
visualc++经典易懂全视频教程之例程二源程序
安装viaual c++,打开附件内的工程,编译,组建,运行即可(近期将陆续上传视频教程内的各例程的源程序,希望能对vc++的初学者有点儿益处!
#include<windows.h>//包含应用程序中所需的数据类型和数据的定义
#include<stdlib.h> //包含系统标准库
#include<string.h> //包含系统定义的字符串库
long winapi wndproc(hwnd hwnd,uint imessage,uint wparam,long lparam); //定义消息处理函数的原型
bool initwindowsclass(hinstance hinstance); //定义初始化窗口类的函数原型
bool initwindows(hinstance hinstance,int ncmdshow);//定义初始化窗口的函数原型
hwnd hwndmain;//定义主窗口的句柄
//主函数
//----------------以下初始化窗口类-----------------
int winapi winmain(hinstance hinstance,hinstance hprevinstance,lpstr lpcmdline,int ncmdshow)
{
msg message;
if(!initwindowsclass(hinstance))
return false;
if(!initwindows(hinstance,ncmdshow))
return false;
while(getmessage(&message,0,0,0)) //消息循环
{
translatemessage(&message);
dispatchmessage(&message);
}
return message.wparam;
}
long winapi wndproc(hwnd hwnd,uint imessage,uint wparam,long lparam)
{hdc hdc; //定义设备环境句柄
hbrush hbrush; //定义画刷的句柄
hpen hpen; //定义画笔的句柄
paintstruct ptstr; //定义指向包含绘图停息的结构体变量
point points[6]={{100,212},{70,227},{70,250},{130,250},{130,227},{100,212}};//定义一个point数组,包括6个点
switch(imessage) //处理消息
{ case wm_paint: //处理绘图消息
hdc=beginpaint(hwnd,&ptstr);
hpen=(hpen)getstockobject(null_pen);//获取系统定义的空画笔
selectobject(hdc,hpen);//选择画笔
hbrush=(hbrush)getstockobject(black_brush);//获取系统定义的画刷
selectobject(hdc,hbrush);//选择画刷
lineto(hdc,50,50);//画线
deleteobject(hpen);//删除画笔
hpen=createpen(ps_solid,2,rgb(255,0,0));//创建画笔
selectobject(hdc,hpen);//选择画笔
lineto(hdc,150,50);
lineto(hdc,100,137);
lineto(hdc,50,50);//画一个三角形
polyline(hdc,points,6);//画一个五边形
arc(hdc,63,137,138,212,100,137,100,137);//画一个圆
pie(hdc,213,137,288,212,240,137,260,137);//画一个圆饼
rectangle(hdc,213,212,287,250);//画一个长方形
roundrect(hdc,213,100,287,137,20,20);//画一个圆角长方形
deleteobject(hpen);//删除画笔
deleteobject(hbrush);//删除画刷
endpaint(hwnd,&ptstr);//结束绘画
return 0;
case wm_destroy://结束应用程序
postquitmessage(0);
return 0;
default://其他消息处理程序
return(defwindowproc(hwnd,imessage,wparam,lparam));
}
}
bool initwindowsclass(hinstance hinstance)
{wndclass wndclass;
wndclass.style=cs_hredraw | cs_vredraw;
wndclass.lpfnwndproc=wndproc;//定认窗口处理函数
wndclass.cbclsextra=0; //窗口类无扩展
wndclass.cbwndextra=0; //窗口实例无扩展
wndclass.hinstance=hinstance;//当前实例句柄
wndclass.hicon=loadicon(null,"end");//窗口的最小化图标为缺省图标
wndclass.hcursor=loadcursor(null,idc_arrow);//窗口采用箭头光标
wndclass.hbrbackground=(hbrush)getstockobject(white_brush);//窗口背景为白色
wndclass.lpszmenuname=null;//窗口中无菜单
wndclass.lpszclassname="winfill";//窗口类名为“winfill”
return registerclass(&wndclass);
}
bool initwindows(hinstance hinstance,int ncmdshow)
{hwnd hwnd;
hwnd=createwindow
(
"winfill", //窗口类名
"逐梦论坛lyyjl学习编写", //窗口实例的标题名
ws_overlappedwindow|ws_hscroll|ws_vscroll, //窗口的风格
cw_usedefault,
0, //窗口左上角坐标为缺省值
cw_usedefault,
0, //窗口的高和宽为缺省值
null, //此窗口无父窗口
null, //此窗口无主菜单
hinstance, //创建此窗口的应用程序的当前句柄
null //不使用该值
);
if(!hwnd)
return false;
hwndmain=hwnd;
showwindow(hwnd,ncmdshow);//显示窗口
updatewindow(hwnd);
return true;
}
[attach]1680[/attach]
欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/)
Powered by Discuz! 7.2