建立一个单文档多视图程序实例程序 鼠标左键单击:插入符 键盘:输入字符 鼠标右键单击:messagebox弹出当前坐标

君,已阅读到文档的结尾了呢~~
vc++实验内容实验,VC,内容,VC++,实验内容,VC+,vc++,vc吧,死亡实验
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
vc++实验内容
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口vc++实验内容_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
vc++实验内容
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩39页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢4677人阅读
MFC浅尝(15)
一、简答题
1、在文档视图结构的应用程序中,视图类对象是如何获取文档类对象中数据的
答:通过GetDocument()函数
2、假设建立一个工程名为的工程,利用生成文档视图结构应用程
序框架的个派生类,简述这四个类名和它们的功能。
(1)CMyPrjApp应用程序类:应用程序的起点,负责应用程序的启动。
(2)CMyPrjFrame框架窗口类:应用程序的框架窗口。
(3)CMyPrjView视图类:专门用来堆应用程序的数据进行显示。
(4)CMyPrjDoc文档类:保存程序中的数据成员,对程序中的数据进行管理。
3、在程序设计中,如何显示和更新窗口?
答:调用windows系统函数ShowWindow( )显示窗口,更新窗口。
4、试说明以下是什么句柄?
() :窗口句柄
() :当前应用程序实例句柄
() :设备上下文句柄
5、应用程序的主要函数有哪个主要任务?
答:注册窗口类、创建应用程序的窗口和建立消息循环。&
6、在窗口类中需要封装哪些成员?
答:在窗体类中需要封装窗口句柄、窗口类型属性的定义、窗口类型的注册、窗口的创建和显示更新窗口。
7、应用程序类应该具备哪些主要功能?
答:在CWinApp中主要有两个功能,一是调用成员函数InitInstance()来完成窗口的设计、注册、创建和显示工作;二是调用成员函数()来实现消息循环。
8、在中的派生类有哪几个?试说出它们的作用?
答:&(1)CPaintDC类:在消息的处理函数中使用的窗口用户区的设备描述环境。只能在视图类的()函数中使用。
(2)CClientDC:应用在除之外的消息处理函数中。可以在除()函数之外的任何地方使用。
(3)CWindowDC:提供整个窗口类绘图的设备描述环境。表示的是整个窗口。
(4)CMetaFileDC:代表图元文件的设备描述环境。
9、在中,如何把自己建立的绘图工具载入设备描述环境?
10、如何使用类提供的绘图方法绘图?
答:直接使用CDC类型的指针变量,调用绘图函数进行绘图。
11、在中,应用程序的界面有哪种方式?
答:题目说的不明不白,我猜测是单文档、多文档、对话框这三种吧。
12、分别说明什么是界面的程序和什么是界面的程序?
单文档:在单文档界面的应用程序中,任何一时刻只能操作一个文档。
多文档:在多文档界面的应用程序中,用户可以同时操作多个文件。
13、文档类的成员函数的作用是什么?
答:文档对应多个视图时,更新所有视图,它是通过调用每个视图类的OnUpdate()函数来更新所有与文本关联的视图。
14、常用的客户区鼠标消息有哪些?(注意:只考虑鼠标两键情况,即只有鼠标左键和右键)
WM_LBUTTONDBLCLK :鼠标左键双击
WM_LBUTTONDOWN :鼠标左键按下
WM_LBUTTONUP :鼠标左键松开
WM_RBUTTONDBLCLK :鼠标右键双击
WM_RBUTTONDOWN :鼠标右键按下
WM_RBUTTONUP :鼠标右键松开
15、程序运行时,用户选中一个菜单项,会发出那种消息?根据什么来判断消息源?
答:用户选中菜单项时,会发出消息。系统根据菜单项的标识来判断消息源。&
16、为什么在应用程序中不直接使用键盘的扫描码而使用与键盘无关的虚拟码,怎样理解Windows中设备无关性这个概念,设备无关性对编写应用程序有什么作用。
& & &为了方便程序设计,windows为每个按键都提供了相应的与设备无关的编码,这个编码便称为虚拟码。因此在windows应用程序的编写中,用户可以忽略扫描码,而直接使用虚拟键来对键盘进行操作。
&&&&键盘的扫描码是当用户直接敲击键盘上的按键时,由键盘的接口直接产生的与该键对应的一种编码。由于市面上的键盘种类很多,所以不同类型的键盘产生的扫描码有可能是不同的,也就是说,这种扫描码是与具体的键盘相关的。这样在编写程序时会有很大的不便。所以在Windows编程中提出了设备无关性这个概念,它是基于通用性来设计的,基于这种方法设计出来的程序是不依赖于具体的硬件的,甚至不依赖于软件。它不单单是针对键盘。另外,它还应用在网络通信等方面。因此,设备无关性为人们编写程序带来了很大的方便。
17、在 MSG 结构类型中,第一个成员所代表的含义是什么?
&&MSG 结构类型定义如下:
&&typedef struct tagMSG
& & HWND &&
&&&UINT &&
&&&WPARAM wP
&&&LPARAM lP
&&&DWORD &
&&&POINT &
&&} MSG, *PMSG
答:HWND && hwnd是窗口句柄。第一个成员变量表示消息所属的窗口。在程序中,用类型的变量来标识窗口。
18、简述在中使用位图资源的步骤?
答:准备好图表文件 ,在++中,选择图表文件 → 在资源文件中添加如下描述句:程序资源的【选项】 “资源文件路径”
&&1)把位图资源载入位图对象;
&&2)获得位图信息;
&&3)把位图选入内存设备环境;
&&4)显示位图。
19、函数在什么情况下返回,从而导致消息循环终止程序结束。&
答:在接收到消息时返回。
20、在 WNDCLASSEX 结构类型中,各个成员所代表的含义是什么?
&&&&&WNDCLASSEX 结构类型定义如下:
&&typedef struct _WNDCLASSEX &
&&{ UINT &&&&&cbS //窗口的大小
&&&UINT &&&&& //窗口的样式
&&&WNDPROC &&lpfnWndP //表示指向窗口函数的指针
&&&int &&&&&&cbClsE //表示窗口类附加字节
&&&int &&&&&&cbWndE //表示窗口类字节
&&&HINSTANCE hI //表示当前应用程序实例句柄
&&&HICON &&&&hI //表示指定窗口的图标
&&&HCURSOR &&hC //用于指定窗口的光标
&&&HBRUSH &&&hbrB //用于指定窗口的背景颜色
&&&LPCTSTR &&lpszMenuN //用于指定窗口的菜单资源名
&&&LPCTSTR &&lpszClassN //用于指定窗口的类名
&&&HICON &&&&hIconSm; //窗口类关联的小图标
&&} WNDCLASSEX
21、简述自定义消息的步骤?
第一步:定义消息。开发应用程序时,推荐用户自定义消息至少是,因为很多新控件也要使用消息。
第二步:在类头文件的块中说明消息处理函数。
第三步:实现消息处理函数。该函数使用和参数并返回。
第四步:在用户类的消息块中,使用宏指令将消息映射到消息处理函数中。
22、简述模态对话框与非模态对话框的区别?
(1). 模式对话框就是不处理它就没法处理父窗口而非模式对话框就是不用先处理此对话框也可以处理父窗口
(2). 模式对话框一般是使用,而非模式对话框的创建则是使用。
(3). 模式对话框的销毁是使用,而非模式对话框的销毁是使用。
二、编写程序(编程题已经打包上传,)
1、编写一个应用程序,使用类的函数在屏幕坐标(,)的位置输出“”字符串?
答:在于函数中写入如下代码:
void CMyView::OnDraw(CDC* pDC)
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC-&TextOut(100,100,&Hello World&);
2、编写一个单文档应用程序,程序启动后在用户区显示一个矩形,当用鼠标左键单击用户区后,该矩形变成椭圆形,如果再单击则变成矩形,以此循环。
答:()在视图类声明定义成员变量
CRect m_rectR
()在视图类的构造函数中对成员变量进行初始化
CMyView::CMyView()
m_bKey=FALSE;
m_rectRec.left=100;
m_rectRec.top=100;
m_rectRec.bottom=400;
m_rectRec.right=400;
()在视图类鼠标左键按下消息中添加相应代码:
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
if(m_bKey)
m_bKey=FALSE;
m_bKey=TRUE;
InvalidateRect(m_rectRec);
CView::OnLButtonDown(nFlags, point);
()在视图类的OnDraw函数中添加相应代码:
void CMyView::OnDraw(CDC* pDC)
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(m_bKey)
pDC-&Ellipse(m_rectRec);
pDC-&Rectangle(m_rectRec);
3、编写一个单文档应用程序,程序启动后在用户区显示一个椭圆形,每单击鼠标左键一次则圆的颜色会变化一次。
答:()在视图类声明定义成员变量
int m_clr1;
int m_clr2;
int m_clr3;
()在视图类的构造函数中对成员变量进行初始化
CCIRCLEView::CCIRCLEView()
m_clr1=255;
m_clr2=255;
m_clr3=255;
()在视图类鼠标左键按下消息中添加相应代码:
void CCIRCLEView::OnLButtonDown(UINT nFlags, CPoint point)
if(m_clr1&10)
m_clr1-=10;
m_clr2-=10;
m_clr3-=10;
m_clr1=255;
m_clr1=255;
m_clr1=255;
InvalidateRect(NULL);
CView::OnLButtonDown(nFlags, point);
()在视图类的OnDraw函数中添加相应代码:
void CCIRCLEView::OnDraw(CDC* pDC)
CCIRCLEDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
COLORREF clr=RGB(m_clr1,m_clr2,m_clr3);
CBrush newBrush(clr);
CBrush *oldBrush=pDC-&SelectObject(&newBrush);
pDC-&Ellipse(20,20,200,200);
pDC-&SelectObject(oldBrush);
4、简单的计算程序界面如下图所示,操作数1对应编辑框控件的ID为 IDC_EDIT1,对应值类型的成员变量m_op1(int);操作数2对应编辑框控件的ID为IDC_EDIT2,对应值类型的成员变量m_op2(int);计算结果对应的编辑框控件的ID 为IDC_EDIT3,对应值类型的成员变量m_result(int)。 假设输入的数为整数,加法按钮的功能是将两操作数相加,并将结果在对应的编辑框IDC_EDIT3显示出来。写出加法按钮对应的代码。&
&void CExDlg::OnButton1()
UpdateDate(TRUE); &&&&&&&&&&&//此处是UpdateData(TRUE);
m_result = m_op1 + m_op2; &&&
UpdateDate(FALSE); &&&&&&&&&&
void CExDlg::OnButton2()
UpdateDate(TRUE); &&&&&&&&&&&
m_result = m_op1 - m_op2; &&&
UpdateDate(FALSE); &&&&&&&&&&
5、下面是一个基于对话框的应用程序,用来求解一元二次方程的根。当用户在A、B、C 三个编辑框中输入3个参数后,单击【计算】按钮,将显示出该方程的根。
各控件对应的成员变量见下表:
IDC_A_EDIT
IDC_B_EDIT
IDC_C_EDIT
IDC_X1_EDIT
IDC_X2_EDIT
试写出计算按钮的单击消息处理函数。
答:void CEx6_1Dlg::OnButton1()
UpdateData(); &&&&&&&&&&&
disc=(double)(m_b*m_b-4*m_a*m_c);
if ( fabs(disc)&=1e-6 ) &&&&&&//如果disc等于0
{ &m_x1.Format(&x1=%6.2f &,-m_b/(2*m_a));
&&&&&&m_x2.Format(&x2=%6.2f &,-m_b/(2*m_a));
else &if ( disc&1e-6 ) &&&&&&&&//如果disc大于0
{ &double x1,x2;
&&&x1=(-m_b-sqrt(disc))/(2*m_a);
&&&x2=(-m_b+sqrt(disc))/(2*m_a);
&&&m_x1.Format(&x1=%6.2f&,x1);
&&&m_x2.Format(&x2=%6.2f&,x2);
else &&&&&&&&&&&&&&&&&&&//如果disc小于0
double realpart,
realpart=-m_b/(2*m_a);
&&&&&imagpart=sqrt(-disc)/(2*m_a);
&&&&&m_x1.Format(&x1=%6.2f+%6.2fi&,realpart,imagpart);
&&&&&m_x2.Format(&x2=%6.2f-%6.2fi&,realpart,imagpart);
UpdateData(FALSE); &&&&&&
注意添加&math.h&头文件
6、编写一个单文档应用程序,该程序在用户区能以在两个矩形的相交矩形为外接矩形画一个椭圆。(注意:只考虑两个矩形相交的情况,不考虑不相交的情况。)
答:()在视图类声明定义成员变量
CRect m_rRect1;
CRect m_rRect2;
()在视图类的构造函数中对成员变量进行初始化
CRECTView::CRECTView()
&&&&m_rRect1.left=50;
m_rRect1.top=50;
m_rRect1.bottom=200;
m_rRect1.right=250;
m_rRect2.left=100;
m_rRect2.top=120;
m_rRect2.bottom=400;
m_rRect2.right=300;
()在视图类的OnDraw函数中添加相应代码:
void CRECTView::OnDraw(CDC* pDC)
CRECTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int x1,y1,x2,y2;
if(m_rRect1.left&m_rRect2.left)
x1=m_rRect2.
x1=m_rRect1.
if(m_rRect1.top&m_rRect2.top)
y1=m_rRect2.
y1=m_rRect1.
if(m_rRect1.right&m_rRect2.right)
x2=m_rRect1.
x2=m_rRect2.
if(m_rRect1.bottom&m_rRect2.bottom)
y2=m_rRect1.
y2=m_rRect2.
pDC-&Ellipse(x1,y1,x2,y2);
7、编写一个单文档应用程序,在窗口用户区中绘制一个矩形,用键盘上的上、下、左、右光标键可以使该矩形分别向个方向移动,(注意:每一次只移动像素,矩形不能移出屏幕)。
答:()在文档类声明定义成员变量
()在文档类的构造函数中对成员变量进行初始化
CSample0803Doc::CSample0803Doc()
m_rect.left=50;
m_rect.right=150;
m_rect.top=50;
m_rect.bottom=150;
()在视图类的OnDraw函数中添加相应代码:
void CSample0803View::OnDraw(CDC* pDC)
CSample0803Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC-&Rectangle(pDoc-&m_rect);
()在视图类的OnKeyDown函数中添加相应代码:
void CSample0803View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
CSample0803Doc *pDoc=GetDocument();
GetClientRect(&rt); //获取当前的绘图区域
switch(nChar)
case VK_LEFT: //如果按下的是向左的箭头←
if(pDoc-&m_rect.left&15)
pDoc-&m_rect.left-=15;
pDoc-&m_rect.right-=15;
case VK_RIGHT: //如果按下的是向右的箭头→
if(pDoc-&m_rect.right&=(rt.right-rt.left)-15)
pDoc-&m_rect.left+=15;
pDoc-&m_rect.right+=15;
case VK_UP: //如果按下的是向上的箭头↑
if(pDoc-&m_rect.top&15)
pDoc-&m_rect.top-=15;
pDoc-&m_rect.bottom-=15;
case VK_DOWN: //如果按下的是向下的箭头↓
if(pDoc-&m_rect.bottom&=(rt.bottom-rt.top)-15)
pDoc-&m_rect.top+=15;
pDoc-&m_rect.bottom+=15;
InvalidateRect(NULL,TRUE); //刷新窗口
CView::OnKeyDown(nChar, nRepCnt, nFlags);
8、简单计算程序界面如下图所示,x对应编辑框控件的ID为 IDC_EDIT1,对应值类型的成员变量m_x(double);y对应编辑框控件的ID为IDC_EDIT2,对应值类型的成员变量m_y(double);z对应的编辑框控件的ID 为IDC_EDIT3,对应值类型的成员变量m_z(double)。乘法按钮的功能是将x,y相乘,除法按钮的功能是将x,y相除,并将结果在z对应的编辑框IDC_EDIT3显示出来。写出乘法按钮和除法按钮对应的代码。
答:void CExDlg::OnButtonMul()
{ &&UpdateDate(TRUE); &&&&&&&&&&&
m_z = m_x * m_y; &&&
UpdateDate(FALSE); &&&&&&&&&&
void CExDlg::OnButtonDiv()
{ &&UpdateDate(TRUE); &&&&&&&&&&&
if ( m_y == 0 )
{ &&&&MessageBox( “除数不能为0!”);
m_z = m_x / m_y; &&&
UpdateDate(FALSE);
9、设计一个基于对话框的应用程序,如下图所示。要求:单击Color按钮,能弹出通用颜色对话框选取颜色,并用该颜色在屏幕坐标(100,100)位置显示:This is a color example。
写出Color按钮的BN_CLICKED消息处理函数。
答:void CDialog1Dlg::OnColor&()
COLORREF m_
if(dlg.DoModal()==IDOK)
m_clr=dlg.GetColor();
CClientDC dc(this);
dc.SetTextColor(m_clr);
dc.TextOut(100,100,&This is a color example。&);
10、为学员信息设计一个类CStudent,包含:学号、姓名、出生日期、家庭住址、班级,并使该类可以实现串行化。请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容
//CStudent.h
class CStudent :public CObject &{
CString Num;
&&&&DECLARE_SERIAL(CStudent) &// 使对象可串行化
&&&&&&&&virtual void Serialize( CArchive & ar ); //重载串行化函数
// CStudent.cpp
IMPLEMENT_SERIAL(CStudent&,CObject, 0)
void CStudent:Serialize(CArchive & ar)
{ CObject::Serialize(ar);
if ( ar.IsStoring() )
{ ar&&Num&&Name&& Birth &&Address&&G
{ &&ar&&Num&&Name&& Birth &&Address&&G
11、创建一个记录通讯录内容的新类Caddrlist,包含:姓名、住址、电话、出生日期,并使该类可以实现串行化。请写出可以实现要求的CAddrlist.h和CAddrlist.cpp文件的内容
//Addrlist.h文件内容:
class CAddrlist : public CObject &{
CAddrlist();
DECLARE_SERIAL(CAddrlist) &// 使对象可串行化
&&&&virtual void Serialize( CArchive & ar ); //重载串行化函数
// Addrlist.cpp文件内容:
IMPLEMENT_SERIAL(CAddrlist,CObject, 0)
void CAddrlist::Serialize(CArchive & ar) &&&&&
{ CObject::Serialize(ar);
if ( ar.IsStoring() )
{ ar&&Name&&Tel&&Address&&B
{ &&ar&&Name&&Tel&&Address&&B
12、编写一个单文档应用程序,在窗口用户区中绘制一个圆形,当单击鼠标左键时,圆形变大为原图形倍大,当单击鼠标右键时,圆形恢复原状。(注意:矩形的左上角坐标不变)
答:()在文档类声明定义成员变量
()在文档类的构造函数中对成员变量进行初始化
CSample0804Doc::CSample0804Doc()
m_rect.left=100;
m_rect.right=150;
m_rect.top=100;
m_rect.bottom=150;
()在视图类的OnDraw函数中添加相应代码:
void CSample0804View::OnDraw(CDC* pDC)
CSample0804Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC-&Ellipse(pDoc-&m_rect);
()在视图类的OnLButtonDown函数中添加相应代码:
void CSample0804View::OnLButtonDown(UINT nFlags, CPoint point)
CSample0804Doc* pDoc=GetDocument();
GetClientRect(&rt); //获取当前的绘图区域
pDoc-&m_rect.left=100;
pDoc-&m_rect.right=200;
pDoc-&m_rect.top=100;
pDoc-&m_rect.bottom=200;
InvalidateRect(NULL,TRUE); //刷新窗口
CView::OnLButtonDown(nFlags, point);
()在视图类的OnRButtonDown函数中添加相应代码:
void CSample0804View::OnRButtonDown(UINT nFlags, CPoint point)
CSample0804Doc* pDoc=GetDocument();
GetClientRect(&rt); //获取当前的绘图区域
pDoc-&m_rect.left=100;
pDoc-&m_rect.right=150;
pDoc-&m_rect.top=100;
pDoc-&m_rect.bottom=150;
InvalidateRect(NULL,TRUE); //刷新窗口
CView::OnRButtonDown(nFlags, point);
三、给下面的程序中每一句加注释
#include &windows.h&
#include &stdio.h&
LRESULT CALLBACK WinSunProc(
&&HWND hwnd, &&&&&// handle to window
&&UINT uMsg, &&&&&// message identifier
&&WPARAM wParam, &// first message parameter
&&LPARAM lParam &&// second message parameter
int WINAPI WinMain(
&&HINSTANCE hInstance, &&&&&// handle to current instance
&&HINSTANCE hPrevInstance, &// handle to previous instance
&&LPSTR lpCmdLine, &&&&&&&&&// command line
&&int nCmdShow &&&&&&&&&&&&&// show state
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=hI
wndcls.lpfnWndProc=WinSunP
wndcls.lpszClassName=&Weixin2003&;
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
hwnd=CreateWindow(&Weixin2003&,&北京维新科学技术培训中心
0,0,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
TranslateMessage(&msg);
DispatchMessage(&msg);
LRESULT CALLBACK WinSunProc(
&&HWND hwnd, &&&&&// handle to window
&&UINT uMsg, &&&&&// message identifier
&&WPARAM wParam, &// first message parameter
&&LPARAM lParam &&// second message parameter
switch(uMsg)
case WM_CHAR:
char szChar[20];
sprintf(szChar,&char is %d&,wParam);
MessageBox(hwnd,szChar,&weixin&,0);
case WM_LBUTTONDOWN:
MessageBox(hwnd,&mouse clicked&,&weixin&,0);
hdc=GetDC(hwnd);
TextOut(hdc,0,50,&计算机编程语言培训计算机编程语言培训
ReleaseDC(hwnd,hdc);
case WM_PAINT:
PAINTSTRUCT
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,&维新培训维新培训
EndPaint(hwnd,&ps);
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,&是否真的结束?
DestroyWindow(hwnd);
case WM_DESTROY:
PostQuitMessage(0);
return DefWindowProc(hwnd,uMsg,wParam,lParam);
#include &windows.h&
#include &stdio.h&
LRESULT CALLBACK WinSunProc(
&&HWND hwnd, &&&&&// handle to window
&&UINT uMsg, &&&&&// message identifier
&&WPARAM wParam, &// first message parameter
&&LPARAM lParam &&// second message parameter
int WINAPI WinMain(
&&HINSTANCE hInstance, &&&&&// handle to current instance
&&HINSTANCE hPrevInstance, &// handle to previous instance
&&LPSTR lpCmdLine, &&&&&&&&&// command line
&&int nCmdShow &&&&&&&&&&&&&// show state
{ WNDCLASS
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=hI
wndcls.lpfnWndProc=WinSunP
wndcls.lpszClassName=&Computer2009&;
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);
hwnd=CreateWindow(&Computer2009&,&桂林电子科技大学应用科技学院0,0,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
TranslateMessage(&msg);
DispatchMessage(&msg);
LRESULT CALLBACK WinSunProc(
&&HWND hwnd, &&&&&// handle to window
&&UINT uMsg, &&&&&// message identifier
&&WPARAM wParam, &// first message parameter
&&LPARAM lParam &&// second message parameter
{ switch(uMsg)
case WM_CHAR:
char szChar[20];
sprintf(szChar,&char is %d&,wParam);
MessageBox(hwnd,szChar,&weixin&,0);
case WM_LBUTTONDOWN:
MessageBox(hwnd,&mouse clicked&,&weixin&,0);
hdc=GetDC(hwnd);
TextOut(hdc,0,50,&Widows程序设计实验程序设计实验
ReleaseDC(hwnd,hdc);
case WM_PAINT:
PAINTSTRUCT
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,& 程序设计实验程序设计实验
EndPaint(hwnd,&ps);
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,&是否真的结束?
DestroyWindow(hwnd);
case WM_DESTROY:
PostQuitMessage(0);
return DefWindowProc(hwnd,uMsg,wParam,lParam);
#include &windows.h&
#include &stdio.h& &//sprintf()函数在这个头文件中声明
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
&&&&&&&&&&&&&&&&&&&&PSTR szCmdLine, int iCmdShow)
&&&&&static TCHAR szAppName[] = TEXT (&HelloWin&) ;
&&&&&HWND &&&&&&&&
&&&&&MSG &&&&&&&&&
&&&&&WNDCLASS &&&&
&&&&&wndclass.style &&&&&&&&= CS_HREDRAW | CS_VREDRAW ;
&&&&&wndclass.lpfnWndProc &&= WndP
&&&&&wndclass.cbClsExtra &&&= 0 ;
&&&&&wndclass.cbWndExtra &&&= 0 ;
&&&&&wndclass.hInstance &&&&= hI
&&&&&wndclass.hIcon &&&&&&&&= LoadIcon (NULL, IDI_APPLICATION) ;
&&&&&wndclass.hCursor &&&&&&= LoadCursor (NULL, IDC_ARROW) ;
&&&&&wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
&&&&&wndclass.lpszMenuName &= NULL ;
&&&&&wndclass.lpszClassName = szAppN
&&&&&if (!RegisterClass (&wndclass))
&&&&&&&&&&MessageBox (NULL, TEXT (&This program requires Windows NT!&),
&&&&&&&&&&&&&&&&&&&&&&szAppName, MB_ICONERROR) ;
&&&&&&&&&&return 0 ;
&&&&&hwnd = CreateWindow (szAppName, &&&&&&&&&&&&&&&&&// window class name
&&&&&&&&&&&&&&&&&&&&&&&&&&TEXT (&The Hello Program&), // window caption
&&&&&&&&&&&&&&&&&&&&&&&&&&WS_OVERLAPPEDWINDOW, &&&&&&&// window style
&&&&&&&&&&&&&&&&&&&&&&&&&&CW_USEDEFAULT, &&&&&&&&&&&&&// initial x position
&&&&&&&&&&&&&&&&&&&&&&&&&&CW_USEDEFAULT, &&&&&&&&&&&&&// initial y position
&&&&&&&&&&&&&&&&&&&&&&&&&&CW_USEDEFAULT, &&&&&&&&&&&&&// initial x size
&&&&&&&&&&&&&&&&&&&&&&&&&&CW_USEDEFAULT, &&&&&&&&&&&&&// initial y size
&&&&&&&&&&&&&&&&&&&&&&&&&&NULL, &&&&&&&&&&&&&&&&&&&&&&// parent window handle
&&&&&&&&&&&&&&&&&&&&&&&&&&NULL, &&&&&&&&&&&&&&&&&&&&&&// window menu handle
&&&&&&&&&&&&&&&&&&&&&&&&&&hInstance, &&&&&&&&&&&&&&&&&// program instance handle
&&&&&&&&&&&&&&&&&&&&&&&&&&NULL) ; &&&&&&&&&&&&&&&&&&&&// creation parameters
&&&&&ShowWindow (hwnd, iCmdShow) ;
&&&&&UpdateWindow (hwnd) ;
&&&&&while (GetMessage (&msg, NULL, 0, 0))
&&&&&&&&&&TranslateMessage (&msg) ;
&&&&&&&&&&DispatchMessage (&msg) ;
&&&&&return msg.wP
int g_iClickN
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
&&&&&HDC &&&&&&&&
&&&&&PAINTSTRUCT
&&&&&RECT &&&&&&&
&&&&&switch (message)
&&&&&case WM_CREATE:
&&&&&&&&&&g_iClickNum = 0;
&&&&&&&&&&return 0 ;
&&&&&&&&&&
&&&&&case WM_PAINT:
&&&&&&&&&&hdc = BeginPaint (hwnd, &ps) ;
&&&&&&&&&&GetClientRect (hwnd, &rect) ;
&&FillRect(hdc, &rect, CreateSolidBrush(GetBkColor(hdc))); &//用当前背景色填充客户区
&&&&&&&&&&if(g_iClickNum==0)
&&SetTextColor(hdc, RGB(255,0,0));
&&DrawText (hdc, TEXT (&欢迎使用
&&&&&&&&&&&&&&&&&&&&DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
&&char c[100];
&&sprintf(c, &第次鼠标左键按下
&&SetTextColor(hdc, RGB(0,0,255));
&&DrawText (hdc, c, -1, &rect,
&&&&&&&&&&&&&&&&&&&&DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
&&&&&&&&&&
&&&&&&&&&&EndPaint (hwnd, &ps) ;
&&&&&&&&&&return 0 ;
&&&&&&&&&&
&&&&&case WM_LBUTTONDOWN:
&&g_iClickNum++;
&&RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE);
&&return 0 ;
&case WM_DESTROY:
&&&&&&&&&&PostQuitMessage (0) ;
&&&&&&&&&&return 0 ;
&&&&&return DefWindowProc (hwnd, message, wParam, lParam) ;
注:编程题下载,
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:166363次
积分:4349
积分:4349
排名:第5213名
原创:220篇
转载:48篇
评论:156条
文章:24篇
阅读:21646
阅读:5352
文章:21篇
阅读:13122
(13)(18)(12)(10)(19)(24)(34)(32)(30)(11)(26)(11)(9)(5)(13)(2)(1)}

我要回帖

更多关于 创建单文档程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信