vc++期末复习文档格式.docx
- 文档编号:18454784
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:15
- 大小:38.07KB
vc++期末复习文档格式.docx
《vc++期末复习文档格式.docx》由会员分享,可在线阅读,更多相关《vc++期末复习文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
视图类:
OnUpdate
OnDraw
应用程序类InitInstance
框架类PreCreateWindow
OnCreateClient
5框架类的理解
利用MFC的APPWizard创建一个应用工程。
简述MFC自动生成了哪些类及其功能
2窗口程序中基本元素的操作技术(读程序、补充程序)
快捷菜单、动态菜单
动态菜单(两个函数流程意思)
//!
!
//获得程序菜单指针
CMenu*pMenu=GetMenu();
//获得第二个子菜单的指针
CMenu*pMenu1=pMenu->
GetSubMenu
(1);
//添加一个分隔线
pMenu1->
AppendMenu(MF_SEPARATOR);
//在子菜单中增加一菜单项
AppendMenu(MF_STRING,ID_NEW_MENUITEM+0,"
新项1"
//?
?
AppendMenu?
ID_NEW_MENUITEM+0,"
?
//避免系统将“无代码的菜单项”自动置虚
m_bAutoMenuEnable=FALSE;
//自动更新菜单状态开关
//修改菜单后,应重画菜单
DrawMenuBar();
return0;
}
BOOLCMainFrame:
OnCommand(WPARAMwParam,LPARAMlParam)
{
WORDnID=LOWORD(wParam);
WORDnCode=HIWORD(wParam);
if(nID==ID_NEW_MENUITEM+0)
MessageBox("
你选中了新的菜单项1"
returnCFrameWnd:
OnCommand(wParam,lParam);
PreCreateWindow(CREATESTRUCT&
cs)
if(!
CFrameWnd:
PreCreateWindow(cs))
returnFALSE;
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnTRUE;
快捷菜单(讲清所标程序流程)
voidCMainFrame:
OnContextMenu(CWnd*pWnd,CPointpoint)
CMenu*pMenu=newCMenu;
pMenu->
LoadMenu(IDR_MENU1);
CMenu*pMenu1;
pMenu1=pMenu->
GetSubMenu(0);
TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x,point.y,this);
///?
OnMenu3()
AfxMessageBox("
OnMenu3()"
状态栏(cmainframeoncreatectestviewonmousemove)与视图(?
)
cmainframeoncreate:
intCMainFrame:
OnCreate(LPCREATESTRUCTlpCreateStruct)
if(CFrameWnd:
OnCreate(lpCreateStruct)==-1)
return-1;
if(!
m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||
!
m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("
Failedtocreatetoolbar\n"
//failtocreate
}
m_wndStatusBar.Create(this)||
m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
Failedtocreatestatusbar\n"
Deletethesethreelinesifyoudon'
twantthetoolbarto
//bedockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&
m_wndToolBar);
return0;
CTestviewOnMouseMove:
voidCTestView:
OnMouseMove(UINTnFlags,CPointpoint)
CStrings;
s.Format("
X=%d,Y=%d"
point.x,point.y);
//获得窗口框架的指针
CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->
m_pMainWnd;
pFrame->
m_wndStatusBar.SetPaneText(1,s);
CView:
OnMouseMove(nFlags,point);
时钟与作图(读程序或补程序)图形加刷子(?
OnSize(UINTnType,intcx,intcy)
OnSize(nType,cx,cy);
Addyourmessagehandlercodehere
OnGameStart()
SetTimer(1,100,NULL);
OnTimer(UINTnIDEvent)
m_Box.left+=dx;
m_Box.right+=dx;
m_Box.top+=dy;
m_Box.bottom+=dy;
Invalidate();
OnTimer(nIDEvent);
OnDraw(CDC*pDC)
CTestDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
adddrawcodefornativedatahere
pDC->
Rectangle(&
m_Box);
OnGameStop()
KillTimer
(1);
private:
RECTm_Box;
intdx,dy;
④位图(MyBitmaps某个成员变量(dcimage)的信息)数据库(连接字符串。
关闭链接显示数据库)
位图:
myBitmaps:
myBitmaps(charfname[],CDC*pDC)
this->
pDC=pDC;
HBITMAPhBitmap=(HBITMAP)LoadImage(NULL,fname,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
CBitmapobjBitmap;
//操作位图的类
objBitmap.Attach(hBitmap);
objBitmap.GetBitmap(&
bm);
//读取位图结构(长宽字节)
//建立图像设备上下文
dcImage.CreateCompatibleDC(pDC);
dcImage.SelectObject(&
objBitmap);
~myBitmaps()
DeleteDC(dcImage);
voidmyBitmaps:
Draw(CDC*pDC)
BitBlt(100,100,bm.bmWidth,bm.bmHeight,
&
dcImage,0,0,SRCCOPY);
classmyBitmaps
CDCdcImage;
BITMAPbm;
CDC*pDC;
public:
voidDraw(CDC*pDC);
myBitmaps(charfname[],CDC*pDC);
virtual~myBitmaps();
};
数据库:
OnDbconnect()
//!
:
CoInitialize(NULL);
//初始化COM环境
m_Cn.CreateInstance("
ADODB.Connection"
m_Cn->
Open("
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=canyin.mdb"
"
"
adModeUnknown);
OnDbdisconnct()
Close();
OnDbdisplay()
_RecordsetPtrm_pRecordset;
m_pRecordset.CreateInstance("
ADODB.Recordset"
//m_pRecordset->
cai"
m_Cn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdTable);
CStringscmd="
Select*fromcaiwherePrice>
20"
;
m_pRecordset->
Open((_variant_t)scmd,m_Cn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
while(!
m_pRecordset->
adoEOF)//?
//查询当前记录的各种字段的值
//!
intID=(int)m_pRecordset->
GetCollect("
ID"
).lVal;
CStringName=(LPCTSTR)(_bstr_t)m_pRecordset->
Name"
floatPrice=m_pRecordset->
Price"
).fltVal;
m_ID=ID;
m_Name=Name;
UpdateData();
m_pRecordset->
MoveNext();
//当前记录后移//?
OnDbchange()
CStringSql;
//Sql="
UpdatecaisetPrice=Price+1whereID=2"
DeletefromcaiwhereID=2"
Sql="
Insertintocai(ID,Name,Price)Values(11,'
ccc'
90)"
Execute((_bstr_t)Sql,NULL,adCmdText);
⑤一档多视(A1,A2)(CFormViewCListView)
voidCA2View:
OnUpdate(CView*pSender,LPARAMlHint,CObject*pHint)
m_List1.ResetContent();
CA2Doc*pDoc=(CA2Doc*)GetDocument();
for(inti=0;
i<
pDoc->
GetCount();
i++)
{CPoint*p=pDoc->
GetPoint(i);
!
!
%d,%d"
p->
x,p->
y);
m_List1.AddString(s);
类的序列化串行化wqline//!
五个地方填空
//支持串行化,需要使用宏定义
classwqLine:
publicCObject//!
DECLARE_SERIAL(wqLine)//!
POINTsp,ep;
wqLine();
wqLine(POINTsp,POINTep);
virtual~wqLine();
virtualvoidSerialize(CArchive&
ar);
CTestDocserialization
voidCTestDoc:
Serialize(CArchive&
ar)
if(ar.IsStoring())
if(pLine!
=NULL)
pLine->
Serialize(ar);
else
pLine=newwqLine();
pLine->
wqLine*pLine;
virtual~CTestDoc();
控件:
CListCtrlCTreeView(树形控件……给层次结构写代码)
voidCTestDlg:
OnButton1()
HTREEITEMroot=m_Tree.InsertItem("
Parent"
TVI_ROOT,TVI_LAST);
m_Tree.InsertItem("
son1"
root,TVI_LAST);
HTREEITEMson2=m_Tree.InsertItem("
son2"
son3"
sonson1"
son2,TVI_LAST);
sonson2"
sonson3"
m_Tree.Expand(root,TVE_EXPAND);
m_Tree.Expand(son2,TVE_EXPAND);
OnSelchangedTree1(NMHDR*pNMHDR,LRESULT*pResult)
NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;
HTREEITEMp=m_Tree.GetSelectedItem();
HTREEITEMparent=m_Tree.GetParentItem(p);
CStringptext=m_Tree.GetItemText(p);
CStringparenttext=m_Tree.GetItemText(parent);
AfxMessageBox(ptext+"
\n"
+parenttext);
*pResult=0;
3基本编程能力
显示对话框(考)
列表框、组合框的操作(2选1)
OnButtonappend()
staticintn=0;
n++;
aaaaa%d"
n);
m_lstName.AddString(s);
OnSelchangeListname()
intindex=m_lstName.GetCurSel();
index=%d"
index);
CStringname;
m_lstName.GetText(index,name);
m_Name=s+"
"
+name;
UpdateData(FALSE);
组合框(droplist):
voidCTestDialog:
OnButtonFill()
{CStringss[7]={"
星期一"
星期二"
星期三"
星期四"
星期五"
星期六"
星期日"
m_Combo1.ResetContent();
7;
m_Combo1.AddString(ss[i]);
m_Combo1.SetCurSel(0);
//必要
for(i=0;
m_Combo3.AddString(ss[i]);
OnButtonClear()
{intn=m_Combo1.GetCount();
for(inti=n-1;
i>
=0;
i--)
m_Combo1.DeleteString(i);
m_Combo1.SetCurSel(-1);
OnSelchangeCombo1()
{intindex=m_Combo1.GetCurSel();
m_Combo1.GetLBText(index,s);
AfxMessageBox(s);
OnEditchangeCombo3()
m_Combo3.GetWindowText(s);
m_Combo3.AddString(s);
OnButtonAppend()
{CStrings;
m_Combo1.GetWindowText(s);
if(m_Combo1.FindString(0,s)==CB_ERR)
m_Combo1.AddString(s);
}
绘图程序(考)
4基本实践能力(试图条理清晰)
本学期你一定编写了一些窗口程序,或者经历了一些窗口程序的开发过程。
请写出其中你认为最精彩的程序的设计方案。
设计方案应包括:
程序的流程,类的组成,类中的核心数据成员,核心函数。
贪吃蛇游戏
程序流程:
在菜单栏点击按钮“游戏”,选择“开始”,出现游戏页面(矩形的游戏边界、方块体圆头的贪吃蛇和方形食物),点击方向按钮启动游戏——蛇开始运动,四个方向键控制蛇的方向。
当蛇头接触食物时食物消失,弹出“胜利”对话框,游戏结束;
当蛇头接触边框,弹出“失败”对话框,游戏结束。
也可以在菜单栏选择“游戏”、“结束”结束游戏。
类的组成与核心数据成员:
lyqGame类
数据成员lyqStage*pStage;
lyqFood*pFood;
lyqSnake*pSnake;
核心函数voidSetSnakeDirection(enumDirectiond);
boolisGameOver();
voidSnakeMove();
voidStart();
voidDraw(CDC*pDC);
lyqGame(RECTr,intw);
virtual~lyqGame();
lyqSnake类
数据成员lyqStage*pStage;
vector<
lyqBox>
body;
enumDirectiondirect;
核心函数voidMove();
voidSetDirection(enumDirectiond);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vc 期末 复习
![提示](https://static.bdocx.com/images/bang_tan.gif)