标题:
MFC实训:吹泡泡程序,基于对话框的应用,链接时出现问题
[打印本页]
作者:
delta116
时间:
2007-12-29 14:44
标题:
MFC实训:吹泡泡程序,基于对话框的应用,链接时出现问题
老师让做一个MFC实训,题目是吹泡泡程序,基于对话框的应用,我在网上找到了代码,但链接时出现了问题。以下是我从网上找的做这个实训的步骤:
用AppWizard建立一个基于对话框的应用程序框架(参看15.4:“用AppWizard生成基于对话框的应用程序”),所有设置均使用缺省值。
使用对话框模板编辑器编辑作为主界面窗口的对话框模板,将其上的静态文本控件和“Cancel”按钮删除,将“OK”按钮的Caption设置为“完成”,并将对话框大小调整为400×300左右。
为对话框模板添加一个Picture控件,将其Type设置为Frame,Color设置为Black,并设置Sunken属性(在Styles选项卡中)。调整其位置为(7,7),大小为287×287。这个框中即为自定义的吹泡泡客户区,所有的吹泡泡活动均在该区域中进行。
为对话框模板添加一个按钮,将其ID改为IDC_COLOR,Caption改为“颜色设置”。
使用ClassWizard为对话框类添加一个鼠标左键消息响应函数OnLButtonDown()和一个按钮命令消息响应函数OnColor()。
程序:
在对话框类的头文件前面添加一行:
#define MAX_BUBBLE 250
并在对话框类定义中添加存放泡泡的几何参数和颜色的数组数据成员:
CRect m_rectBubble[MAX_BUBBLE];
COLORREF m_colorBubble[MAX_BUBBLE];
int m_nBubbleCount;
以及一个存放自定义客户区矩形的数据成员和一个存放当前泡泡颜色设置的数据成员:
CRect m_rectClient;
COLORREF m_colorCurrent;
修改对话框类的OnInitDialog()成员函数,添加计算自定义客户区位置和大小的代码,并将泡泡的数目初始化为0:
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CStatic *pST = (CStatic *)GetDlgItem(IDC_CLIENT);
pST->GetWindowRect(&m_rectClient);
ScreenToClient(&m_rectClient);
m_nBubbleCount = 0;
return TRUE;
}
修改OnPaint()成员函数,添加画出泡泡的有关代码:
void CMyDlg::OnPaint()
{
CPaintDC dc(this);
CRgn rgn;
rgn.CreateRectRgnIndirect(&m_rectClient); // 生成一个区域对象
dc.SelectClipRgn(&rgn); // 选择区域
dc.Rectangle(m_rectClient); // 将客户区背景设置
CBrush brushNew, *pbrushOld; // 白色
for(int i=0; i<m_nBubbleCount; i++)
{
brushNew.CreateSolidBrush(m_colorBubble
);
pbrushOld = dc.SelectObject(&brushNew);
dc.Ellipse(m_rectBubble);
dc.SelectObject(pbrushOld);
brushNew.DeleteObject();
}
}
修改由ClassWizard生成的鼠标左键消息响应函数OnLButtonDown(),添加吹泡泡的有关代码:
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
if(m_nBubbleCount<MAX_BUBBLE)
{
int r = rand()%50+10;
CRect rect(point.x-r, point.y-r, point.x+r, point.y+r);
m_rectBubble[m_nBubbleCount] = rect;
m_colorBubble[m_nBubbleCount] = m_colorCurrent;
m_nBubbleCount++;
InvalidateRect(rect, FALSE);
}
}
最后修改由ClassWizard生成的按钮消息响应函数OnColor(),添加调用颜色设置公用对话框的代码:
void CMyDlg::OnColor()
{
m_colorCurrent = RGB(200, 200, 200);
CColorDialog dlg(m_colorCurrent);
if(dlg.DoModal() == IDOK)
m_colorCurrent = dlg.GetColor();
}
希望大家能帮帮我,明天就要交了。
编译时,出现以下问题:C:\Program Files\Microsoft Visual Studio\MyProjects\paopao\paopaoDlg.cpp(99) : error C2065: 'IDC_CLIENT' : undeclared identifier
IDC_CLIENT'是出现在OnInitDialog()函数的定义当中。
在线等。。。
[
本帖最后由 delta116 于 2007-12-29 15:28 编辑
]
作者:
glw0413
时间:
2008-1-18 12:10
提示:
作者被禁止或删除 内容自动屏蔽
作者:
phoenix
时间:
2008-1-18 14:14
建议楼主去csdn.net吧,这里不是开发社区,这个帖子放这里也不合适
作者:
vicandy
时间:
2008-1-18 14:25
MFC是“微软基础类库”的意思吗?
作者:
清风皓月苔茵展
时间:
2008-1-19 21:02
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yt123
时间:
2008-2-17 18:25
``````````````
作者:
81635631
时间:
2008-2-18 23:51
invoke MessageBox,NULL,CTXT('完全看不懂'),CTXT('汗'),MB_OK
invoke ExitProcess,NULL
欢迎光临 世界之窗论坛 (http://bbs.theworld.cn./)
Powered by Discuz! 7.2