当前位置:文档之家› MFC学习笔记整理

MFC学习笔记整理

MFC学习笔记整理
MFC学习笔记整理

MFC学习总结(67个技巧)

1."属性页的添加:

创建对话框的类,该类要从CpropertyPage继承;然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch;最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码:

m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, 0);

"//使选项卡的按钮在下面

"if(m_tabsheet.m_hWnd)

"m_tabsheet.ShowWindow(SW_MAXIMIZE);//显示选项卡

//加入标签,标签名由各个子对话框的标题栏决定

"m_tabsheet.AddPage(&m_skatch);

"//用Create来创建一个属性页

"m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE,

WS_EX_CONTROLPARENT);

"

RECT rect;

"m_tabsheet.GetWindowRect(&rect);

"int width = rect.right - rect.left;

"int height = rect.bottom - rect.top;

"

"//调整属性页的大小和位置

"m_tabsheet.SetWindowPos(NULL, 225, 225, width-82,

height,SWP_NOACTIVATE);

属性页的添加完成。如果要添加多个属性页,则只需要增加多个对象,如下:

m_tabsheet.AddPage(&m_skatch1);

m_tabsheet.AddPage(&m_skatch2);

. . . . . .

2."List Control中标题栏(Column)的添加:

创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report、Align项里选择Top、Sort项里选择None.

然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象m_list然后在.cpp 文件的OnInitDialog()之类的函数里实现如下代码:

CString strname[3];

strname[0]="Screen Name";

strname[1]="Form ID";

strname[2]="Category Path";

for(int i=0;i<3;i++)

{

m_List.InsertColumn(i,strname[i],LVCFMT_LEFT,130);

}

在这之前也要将List Control的ID与ClistCtrl的对象m_list在DoDataExchange(CDataExchange* pDX)函数里绑定,如下:

DDX_Control(pDX, IDC_LIST, m_List);

3."ToolBar和StatusBar中控件的添加:

方法⑴.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID 为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上).

其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/增加到工程/新的类;也可以选择工程的根,然后点击右键,选择新的类;或者CTL+W,选择增加类/新的类 --- 然后在class type里选择Generic Class,在Name 栏里输入新类的名字,Base class里输入CToolBar),创建成功后在该类里创建要增加的控件的对象,如:

CComboBox""m_wndMyCombo;

CStatic""m_wndCategory, m_wndCategoryPath;

CButton""m_wndOpenButton;

Cedit"""m_wndEdit;

然后在构造函数里初始化如:

m_wndMyCombo.m_hWnd = NULL;

m_wndCategory.m_hWnd = NULL;

m_wndCategoryPath.m_hWnd = NULL;

m_wndOpenButton.m_hWnd = NULL;

m_wndEdit.m_hWnd = NULL;

接着在CMainframe的头文件里创建CMainToolBar的一个对象m_wndToolBar,最后在.cpp文件的OnCreate函数的最后实现如下:

"int index = 0;

"CRect rect; // 可定义在头文件当中

"//ComboBox

"{

""//找到指定的工具项

""while(m_wndToolBar.GetItemID(index)!=ID_TOOL_COMBO) """index++;

""//设置指定工具项的宽度并获取新的区域120是宽度

""m_wndToolBar.SetButtonInfo(index, ID_TOOL_COMBO,

TBBS_SEPARATOR, 120);

""m_wndToolBar.GetItemRect(index, &rect);

""

""//设置位置

""rect.top+=1;

""rect.bottom += 200;

""

""// 创建并显示控件

""if(!m_wndToolBar.m_wndMyCombo.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL|

"""CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect, &m_wndToolBar,

ID_TOOL_COMBO))

""{

"""TRACE0("Failed to create combo-box\n");

"""return FALSE;

""}

""m_wndToolBar.m_wndMyCombo.ShowWindow(SW_SHOW);

""

""//填充内容"

""m_wndToolBar.m_wndMyCombo.AddString("25%");

""m_wndToolBar.m_wndMyCombo.AddString("50%");

""m_wndToolBar.m_wndMyCombo.AddString("75%");

"

""//选择默认项

""m_wndToolBar.m_wndMyCombo.SetCurSel(0);

""

""//获取到内容并MSGBOX显示出来

""CString strContent;

""m_wndToolBar.m_wndMyCombo.GetWindowText(strContent);

""index = 0;

"}

其他控件都类似创建(只需要注意一下各自的Create函数的参数即可)。

方法⑵.这种方法创建不太容易控制:直接在CMainframe的头文件中创建要增加的控件的对象,如CButton"的对象m_wndAboutButton,然后创建CToolBar或者CstatusBar的对象,如:CstatusBar的对象_wndStatusBar;再增加几个函数如下:Protected:

virtual void RecalcLayout(BOOL bNotify = TRUE);

"afx_msg void CMainFrame::OnViewStatusBar();

接着在.cpp文件中将StatusBar的ID和OnViewStatusBar 函数绑定在一起,如下所示:BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

"//{{AFX_MSG_MAP(CMainFrame)

"ON_COMMAND(ID_VIEW_STATUS_BAR, OnViewStatusBar)

"ON_WM_CREATE()

"//}}AFX_MSG_MAP

END_MESSAGE_MAP()

然后Create函数的最后(返回值之前)实现如下代码:

CRect rc;

"VERIFY(m_wndAboutButton.Create(_T("MyAbout"),

"" WS_VISIBLE,rc,this,ID_APP_ABOUT));

"// TODO: Remove this if you don't want tool tips or a resizeable toolbar "m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |

"CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

再在RecalcLayout函数里实现:

CRect rc;

if (m_wndStatusBar.m_hWnd)

{

""m_wndStatusBar.GetWindowRect(&rc);

""ScreenToClient(&rc);

""rc.right -= 50;

""m_wndStatusBar.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),rc.Height (),

"""SWP_NOZORDER);

""rc.left = rc.right;

""rc.right += 50;

""m_wndAboutButton.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),rc.Heig ht(),

"""SWP_NOZORDER);

"}

最后在OnViewStatusBar()里实现:

BOOL bShow = m_wndStatusBar.GetStyle() & WS_VISIBLE;

"m_wndAboutButton.SetWindowPos(NULL, 0, 0, 0, 0,

SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE| (bShow ? SWP_SHOWWINDOW : SWP_HIDEWINDOW));

ToolBar中的创建与此相同,只需更改一下句柄即可。

4."通过Control创建的控件,对其属性的动态控制:

在对话框类的头文件里创建所要改变属性的控件的对象,如要改变一个Button(其ID 为IDC_MyButton)的属性,则需创建Cbutton的对象m_button。然后在.cpp中的DoDataExchange函数里将Button的ID和创建的对象绑定在一起:

//{{AFX_DATA_MAP(CPrintDlg)

""// NOTE: the ClassWizard will add DDX and DDV calls here

"DDX_Control(pDX, IDC_MyButton, m_button);

"//}}AFX_DATA_MAP

然后可以在该函数的最后进行初始化:

"m_button.EnableWindow(FALSE);

到这里已经实现了改变属性。如果要动态改变其属性,可如下实现(通过两个Button 的点击改变起属性):

// RadioAll Button的点击响应函数

void CPrintDlg::OnRadioAll()

{

""// TODO: Add your control notification handler code here

""m_button.EnableWindow(TRUE);

}

// RadioSelect Button的点击响应函数

void CPrintDlg::OnRadioSelect()

{

""// TODO: Add your control notification handler code here

""m_button.EnableWindow(FALSE);

}

也可以通过一个Check Button的点击来改变,在其点击响应函数里实现:

m_button.EnableWindow(!m_button.IsWindowEnabled());

其余控件属性的改变都如此。

5."窗口的分割与停靠:

一、新建一个类CMySplitter,基类为CSplitterWnd

二、重载该类的OnMouseMove函数:

void CMySplitter::OnMouseMove(UINT nFlags, CPoint point)

{

"// 限制切分条的运动范围。

"if(point.x<228||point.x>600)

"{

""CWnd::OnMouseMove(nFlags, point);

"}

"else

"{

""CSplitterWnd::OnMouseMove(nFlags, point);

"}

}

三、然后就可以跟一般的窗口分割那样去做了,if(point.x<228||point.x>600)这里的范围可以随你去设置了 ^_^,够简单吧。

四、切分窗口

在MaiFram.h建立切分条对象:

protected:

CMySplitter m_wndSplitter; //切分窗口对象

//在MaiFram.cpp中实现窗口切分:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT

/*lpcs*/,CCreateContext* pContext)

{

"// 创建拆分器窗口

if (!m_wndSplitter.CreateStatic(this, 1, 2))

""return FALSE;

if (!m_wndSplitter.CreateView(0, 0,

RUNTIME_CLASS(CLeftView),CSize(228,100), pContext)

||!m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CDataEditView), CSize(100, 100), pContext))

"{

""m_wndSplitter.DestroyWindow();

""return FALSE;

"}

"return TRUE;

}

6.①怎样在程序开始的时候让它最大化?

②vc++做出来的exe文件在窗体的右上方是没有最大化和最小化按钮的,怎样实现这一功能?

③如何在显示窗口时,使最大化按钮变灰?

①在App类里的C…App::InitInstance()中把

m_pMainWnd->ShowWindow(SW_SHOW)改成

m_pMainWnd->ShowWindow(SW_MAXIMIZE);

②在CreateWidnow时用

WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX 风格.

③第一种方法:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

// TODO: Modify the Window class or styles here by modifying

//the CREATESTRUCT cs

// disable the maxmini box

cs.style &= ~WS_MAXIMIZEBOX;

return TRUE;

}

第二种方法:

CMenu *pMenu=AfxGetApp()->m_pMainWnd->GetSystemMenu(FALSE);

int x=pMenu->GetMenuItemCount( );

UINT pID=pMenu->GetMenuItemID(x-1);

pMenu->EnableMenuItem(pID, MF_DISABLED);

第三种方法:

ModifyStyle(WS_MAXIMIZEBOX, 0);

这个函数也可以是最大化按钮失效!

并且可以在程序中动态的改变窗口的风格

7. 更改属性页标题

void CProSheet::SetPageTitle(int nPage, int nImage, CString strTitle) {

TC_ITEM item;

//item.mask = TCIF_TEXT|TCIF_IMAGE;//设置图标+文字

item.mask = TCIF_IMAGE;//只设置图标

item.iImage = nImage;

// item.pszText = strTitle.GetBuffer(0);//设置文字

GetTabControl ()->SetItem (nPage, &item);

//要设置文字时就将上面2行有注释符的代码前的注释符去掉

}

8. 创建动态菜单

void CMainFrame::OnSelectState(NMTOOLBAR* pnmtb, LRESULT *plr) {

"CMenu menu;

"if(!menu.CreateMenu())

"return;

"menu.AppendMenu(MF_STRING,0,"开始");

"menu.AppendMenu(MF_STRING,0,"结束");

"CRect rc;

"m_wndToolBar.SendMessage(TB_GETRECT, pnmtb->iItem, (LPARAM)&rc); "m_wndToolBar.ClientToScreen(&rc);

"menu.TrackMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, """rc.left, rc.bottom, this, &rc);

//"menu.DestroyMenu();

"menu.detach();

}

9.关于打印

1.要打印哪个视就

((CMainFrame*)AfxGetMainWnd())->m_wndSplitter.SetActivePane(...)

//要打印的那个视对应的Pane

2.有一个单文档工程,文档窗口被切分:左视图由CTreeView 的派生类管理,右视图由CListView 的派生类CMyListView(其为风格为LVS_REPORT)管理,我想为右视图添加打印和打印预览,我在MyListView.cpp中添加了

ON_COMMAND(ID_FILE_PRINT,CListView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,CListView::OnFilePrintPreview)

还有

BOOL CMyListView::OnPreparePrinting(CPrintInfo* pInfo)

{

// TODO: call DoPreparePrinting to invoke the Print dialog box

// return CListView::OnPreparePrinting(pInfo);

pInfo->SetMaxPage(2);

BOOL bret=DoPreparePrinting(pInfo);

pInfo->m_nNumPreviewPages=2;

return bret;

}

3. 下面是从MSDN中摘出来的一段,是用来改变消息路由的。用了这段代码之后,CView中的消息(菜单,控件,子窗口)将先被CMyShape类来处理。不知道你要的是不是这样的效果。

// This example illustrates extending the framework's standard command

// route from the view to objects managed by the view.This example // is from an object-oriented drawing application, similar to the

// DRAWCLI sample application, which draws and edits "shapes".

BOOL CMyView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)

{

// Extend the framework's command route from the view to

// the application-specific CMyShape that is currently selected

// in the view. m_pActiveShape is NULL if no shape object

// is currently selected in the view.

if ((m_pActiveShape != NULL)

&& m_pActiveShape->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))

return TRUE;

// If the object(s) in the extended command route don't handle // the command, then let the base class OnCmdMsg handle it.

return CView::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

}

// The command handler for ID_SHAPE_COLOR (menu command to change

// the color of the currently selected shape) was added to

// the message map of CMyShape (note, not CMyView) using ClassWizard.

// The menu item will be automatically enabled or disabled, depending

// on whether a CMyShape is currently selected in the view, that is,

// depending on whether CMyView::m_pActiveView is NULL.It is not

// necessary to implement an ON_UPDATE_COMMAND_UI handler to enable

// or disable the menu item.

BEGIN_MESSAGE_MAP(CMyShape, CCmdTarget)

//{{AFX_MSG_MAP(CMyShape)

ON_COMMAND(ID_SHAPE_COLOR, OnShapeColor)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

如果你只是想调用OnFilePrint( )函数,可以试一试下面的代码,就和调用其它类中的函数一样。

CMDIFrameWnd *pFrame =

(CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;

// Get the active MDI child window.

CMDIChildWnd *pChild =

(CMDIChildWnd *) pFrame->GetActiveFrame();

// or CMDIChildWnd *pChild = pFrame->MDIGetActive();

// Get the active view attached to the active MDI child

// window.

CMyView *pView = (CMyView *) pChild->GetActiveView();

pView->OnFilePrint( );

4.

void CMyReportView::OnFileOpen()

{

char Filter[] = "Crystal Report files(*.rpt)|*.rpt|All files(*.*)|*.*||"; CRect rect;

CFileDialog

OpenDlg(TRUE,0,0,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,(LPCTSTR) Filter,NULL);

if(OpenDlg.DoModal()!=IDOK) ///显示文件对话框

return;

CString m_fName=OpenDlg.GetPathName(); ///取得文件名

if(m_CrystalReport)

m_CrystalReport.DestroyWindow();

GetClientRect(rect);

///////////////////创建控件///////////////

if (!m_CrystalReport.Create(AfxRegisterWndClass(0,

AfxGetApp()->LoadStandardCursor(IDC_ARROW)),WS_CHILD|WS_VISIBL E,rect,this,IDC_CRYSTALREPORT1))

{

AfxMessageBox("控件创建失败!");

return ;

}

m_CrystalReport.SetWindowParentHandle((long)(this->m_hWnd));///设置父窗口

m_CrystalReport.SetWindowBorderStyle(0); ///设置为没有边框

m_CrystalReport.SetWindowLeft(0); ///左空间

m_CrystalReport.SetWindowTop(0); ///顶部空间

m_CrystalReport.SetWindowControls(FALSE); ///不显示工具条

m_CrystalReport.SetReportFileName(m_fName); ///设置报表文件

m_CrystalReport.SetWindowWidth(rect.Width()); ///设置窗口宽度

m_CrystalReport.SetWindowHeight(rect.Height()); ///设置窗口高度

m_CrystalReport.SetFormulas(0, "Company=\"VC知识库\""); ///将报表中的Company变量的值设置为VC知识库

m_CrystalReport.SetDestination(0); ///设置输出对象是屏幕

m_CrystalReport.PrintReport(); ///显示报表

}

void CMyReportView::OnFilePrint()

{

if(m_CrystalReport && m_CrystalReport.GetReportFileName() != "") {

m_CrystalReport.SetDestination(1); ///设置输出对象是打印机

m_CrystalReport.PrintReport(); ///打印

}

10. Scroll

创建一个基于CScrollview的SDI Project(在第6步中选CScrollview)

若你已创建了,这步可以省略。

然后:

改为如

void CTestView::OnInitialUpdate()

{

CScrollView::OnInitialUpdate();

CSize si zeTotal;

// TODO: calculate the total size of this view

sizeTotal.cx = 1024;//改这两个

sizeTotal.cy = 768; //

SetScrollSizes(MM_TEXT, sizeTotal);

}

11. 修改主窗口风格

AppWizard生成的应用程序框架的主窗口具有缺省的窗口风格,比如在窗口标题条中自动添加文档名、窗口是叠加型的、可改变窗口大小等。要修改窗口的缺省风格,需要重载CWnd::PreCreateWindow(CREATESTRUCT& cs)函数,并在其中修改CREATESTRUCT型参数cs。

CWnd::PreCreateWindow 函数先于窗口创建函数执行。如果该函数被重载,则窗口创建函数将使用CWnd::PreCreateWindow 函数返回的CREATESTRUCT cs参数所定义的窗口风格来创建窗口;否则使用预定义的窗口风格。CREATESTRUCT结构定义了创建函数创建窗口所用的初始参数,其定义如下:

typedef struct tagCREATESTRUCT {

LPVOID lpCreateParams; // 创建窗口的基本参数

HANDLE hInstance; // 拥有将创建的窗口的模块实例句柄

HMENU hMenu; // 新窗口的菜单句柄

HWND hwndParent; // 新窗口的父窗口句柄

int cy; // 新窗口的高度

int cx; // 新窗口的宽度

int y; // 新窗口的左上角Y坐标

int x; // 新窗口的左上角X坐标

LONG style; // 新窗口的风格

LPCSTR lpszName; // 新窗口的名称

LPCSTR lpszClass; // 新窗口的窗口类名

DWORD dwExStyle; // 新窗口的扩展参数

} CREATESTRUCT;

CREATESTRUCT结构的style域定义了窗口的风格。比如,缺省的MDI主窗口的风格中就包括FWS_ADDTOTITLE(在标题条中显示当前的工作文档名)、

FWS_PREFIXTITLE(把文档名放在程序标题的前面)、WS_THICKFRAME(窗口具有可缩放的边框)等风格。由于多种风格参数由逻辑或(“|”)组合在一起的,因此添加某种风格,就只需用“|”把对应的参数加到CREATESTRUCT结构的style域中;删除已有的风格,则需用“&”连接CREATESTRUCT结构的style域与该风格的逻辑非值。CREATESTRUCT结构的x、y、cx、cy域分别定义了窗口的初始位置和大小,因此,在CWnd::PreCreateWindow 函数中给它们赋值,将能定义窗口的初始显示位置和大小。

下例中的代码将主框窗口的大小将固定为1/4屏幕,标题条中仅显示窗口名,不显示文档名。

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

// TODO: Modify the Window class or styles here by modifying

// the CREATESTRUCT cs

// 修改主窗风格

cs.style &= ~FWS_ADDTOTITLE; //去除标题条中的文档名

cs.style &= ~WS_THICKFRAME; //去除可改变大小的边框

cs.style |= WS_DLGFRAME; //增加不能改变大小的边框

// 确定主窗的大小和初始位置

int cxScreen = ::GetSystemMetrics(SM_CXSCREEN);//获得屏幕宽int cyScreen = ::GetSystemMetrics(SM_CYSCREEN); //获得屏幕高cs.x = 0; // 主窗位于左上角

cs.y = 0;

cs.cx = cxScreen/2; // 主窗宽为1/2屏幕宽

cs.cy = cxScreen/2; // 主窗高为1/2屏幕高

return CMDIFrameWnd::PreCreateWindow(cs);

}

12. 控制滚动条

BOOL CDiagramShowView::PreTranslateMessage(MSG* pMsg) {

"CFileTreeDoc* pDoc = (CFileTreeDoc*)GetDocument(); "CPoint point = GetScrollPosition();

"

"if(pMsg->message == WM_KEYDOWN)

"{

""switch(pMsg->wParam)

""{

""case VK_LEFT:

"""if( point.x > 10)

"""{

""""EndPoint.x = EndPoint.x - 10;

""""EndPoint.y = EndPoint.y;

"""}

"""else

"""{

""""EndPoint.x = 0;

""""EndPoint.y = EndPoint.y;

"""}

"""ScrollToPosition(EndPoint);

"""InvalidateRect(NULL,TRUE);

"""break;

""case VK_RIGHT:

"""if( point.x < pDoc->intDiagramColumnCount * pDoc->intColumnWidth - 10 )

"""{

""""EndPoint.x = EndPoint.x + 10;

""""EndPoint.y = EndPoint.y;

"""}

"""else

"""{

""""EndPoint.y = pDoc->intDiagramColumnCount * pDoc->intColumnWidth; """"EndPoint.x = EndPoint.x;

"""}

"""ScrollToPosition(EndPoint);

"""InvalidateRect(NULL,TRUE);

"""break;

""case VK_UP:

"""if( point.y > 10)

"""{

""""EndPoint.y = EndPoint.y - 10;

""""EndPoint.x = EndPoint.x;

"""}

"""else

"""{

""""EndPoint.y = 0;

""""EndPoint.x = EndPoint.x;

"""}

"""ScrollToPosition(EndPoint);

"""InvalidateRect(NULL,TRUE);

"""break;

""case VK_DOWN:

"""if( point.y < pDoc->intDiagramRowCount * pDoc->intRowHeight - 10 ) """{

""""EndPoint.y = EndPoint.y + 10;

""""EndPoint.x = EndPoint.x;

"""}

"""else

"""{

""""EndPoint.y = pDoc->intDiagramRowCount * pDoc->intRowHeight; """"EndPoint.x = EndPoint.x;

"""}

"""ScrollToPosition(EndPoint);

"""InvalidateRect(NULL,TRUE);

"""break;

""default:

"""break;

""}

"}

"return FALSE;

}

// 通过正负号判断是向上还是向下滚动

if(zDelta==120)

向上滚动

if(zDelta==-120)

向下滚动

BOOL CDiagramShowView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)

{

"CFileTreeDoc* pDoc = (CFileTreeDoc*)GetDocument();

"CPoint point = GetScrollPosition();

"

"if(zDelta==120)

"{

""if( point.y >= 20 )

""{

"""EndPoint.x = point.x;

"""EndPoint.y = point.y;

"""

"""EndPoint.x = EndPoint.x;

"""EndPoint.y = EndPoint.y - 20;

""}

""else

""{

"""EndPoint.x = EndPoint.x;

"""EndPoint.y = 0;

""}

"}

"

"if(zDelta==-120)

"{

""if( point.y <= pDoc->intDiagramRowCount * pDoc->intRowHeight - 20 ) ""{

俄罗斯方块mfc实验报告

程序设计实践 设 计 报 告 课题名称:俄罗斯方块(MFC版)学生姓名:黄嘉慧 班级:2012211113 班内序号:27 学号:2012210389 日期:2014.6.1

1. 实验概述 1.1 课题目标和主要内容。 本课题的主要内容是用MFC 实现经典游戏俄罗斯方块的编写。目标是能够正常运行,并且无过于严重的问题。使用的平台为MFC (基于对话框)。 1.2 采用计分升级制来进行游戏。当一次消去一行时,得一分,一次两行得 4分,一次3行,得9分,一次4行,得16 分。每 50分为一个等 级,得分足够则升级并重新开始游戏。 2. 程序设计 2.1 系统总体框架 用一个4维数组DiamondStruct[7][4][4][4]来表示所有的方块,用一个POINT 类型的DiamondPos 来表示方块当前的位置,然后通过一个二维数组BlockPanel[][],来表示整个游戏界面,同时进行障碍的添加。游戏过程中,通过改变DiamondPos 来进行方块的下降以及

左右移动,通过DiamondStruct[7][4][4][4]中第二个参数的改变来进行方块的变换。 2.2系统详细设计 【1】模块划分图及描述 【2】类关系图及描述 CWinApp 与CDialog 为基类。其它为添加的类。 【3】程序流程图及描述

【4】存储结构,内存分配 主要存储结构为数组。同时分配内存的有,画笔,Diamond类的指针,Panel类的指针,Block类的指针,Mill类的指针,Manager类的指

针。 2.3 关键算法分析 【1】 bool Diamond::FullLine() { bool IsFull,Full=false; pManager->SeriesLine=0; for(int iy=0;iy<=pPanel->nVGridNum;iy++) { IsFull=true; for(int ix=0;ix<=pPanel->nHGridNum;ix++) { if(!pBlock->BlockPanel[ix][iy]) IsFull=false; } if(IsFull) { Full=true; pManager->SeriesLine++; for(int jy=iy;jy>0;jy--) { Sleep(10); for(int jx=0;jx<=pPanel->nHGridNum;jx++) { pBlock->BlockPanel[jx][jy]=pBlock->BlockPanel[jx][jy-1]; } } } } pManager->LineNumber+=pManager->SeriesLine; pManager->Result+=pManager->SeriesLine*pManager->SeriesLine; if(Full) return true; else return false; } 该算法实现的功能为,判断是否已经满行,并且若是满行,进行消行,加分的操作。该算法的时间复杂度为O(n)=【(nVGridNum)^2*nHGridNum.】/2

教育学笔记整理版

教育学笔记 教育与教育学 教育的发展 一、教育的概念 教育一词最早出现在《孟子·尽心上》 广义的教育包括家庭教育、学校教育、社会教育。 狭义的教育指学校教育 二、教育的构成要素 教育者:教师是学校教育的主体,在教育过程中发挥主导作用。 受教育者:学生是教育实践活动的对象及学习的主体。 教育影响:教育影响是教育内容、教育方法和教育手段极其联系的总和。 在这三个基本要素中,受教育者和教育内容之间的矛盾是教育中的基本的决定性的矛盾。 三、教育的属性 本质属性:教育是一种有目的的培养人的社会活动。 社会属性:永恒性、历史性、相对独立性、继承性、阶级性。 四、教育功能的分类及教育的个体功能

教育起源的相关学说:

综观古代学校教育,其共同特征是: 1.教育与生产劳动想脱离; 2.教育具有阶级性和等级性 3.教育内容偏重于人文知识,教学方法倾向于自学、对辩和死记硬背。 接下来我们用两张思维导图来记忆近代社会的教育和现代社会的教育: 通过之前的笔记,我们了解了教育发展的历史形态,那世界教育改革的趋势又是什么呢?我们接着往下看:

教育学的研究对象及其发展状况。 首先我们来思考一下,教育的研究对象是什么呢? 那么我们先要了解一下教育学的定义: 教育学是研究教育现象和教育问题,揭示教育规律的一门社会科学。 什么是教育现象呢? 教育现象是教育活动的外在的、表面的特征,包括教育社会现象和教育认识现象。 什么是教育规律呢? 教育规律是教育内部诸因素之间、教育与外部诸因素之间内在、本质、必然的联系。 其次我们来思考一下,教育学的研究任务是什么呢? 教育学的研究任务是阐明教育的基础知识和基本理论,揭示教育教学的基本规律,给教育理论和实践工作者以理论和方法的指导,全面提高教育教学质量,为培养合格的人才服务。这句话比较长,也比较拗口,聪明的你记住了吗? 接下来我们再来看一下教育学和几个概念的联系和区别: 教育学不等于教育方针政策,但二者之间是有联系的,教育方针政策的制定要考虑教育学所阐述的教育科学理论,教育学也要围绕教育方针政策提出的问题、课题,开展科学的研讨和探讨,提供可供参考的意见。 教育学源于教育实践经验,又高于教育实践经验。教育实践经验是学习、研究、发展教育学的基础之一。 教育学是庞大教育科学体系中的基础学科。 教育学的价值与意义: 1.有助于树立正确的教育思想,提高贯彻社会主义教育方针、政策的自觉性。 2.有利于巩固热爱教育事业的专业思想,全面提高教师的素质。 3.有助于认识和掌握教育规律,提高从事教育工作的水平和能力。 4.有助于推动教育改革和教育科学研究。

整理资料的方法

Word,PDF,PPT,TXT之间的转换方法(好东西,以后整理课件就不会那么麻烦了。。。) 把PPT转WORD形式的方法 1.利用"大纲"视图打开PPT演示文稿,单击"大纲",在左侧"幻灯片/大纲”任务窗格的“大纲”选项卡里单击一下鼠标,按"Ctrl+A"组合健全选内容,然后使用"Ctrl+C"组合键或右键单击在快捷菜单中选择"复制"命令,然后粘贴到Word里。 提示:这种方法会把原来幻灯片中的行标、各种符号原封不动的复制下来。 2.利用"发送"功能巧转换打开要转换的PPT幻灯片,单击"文件"→"发送"→"MicrosoftWord"菜单命令。然后选择"只使用大纲"单选按钮并单击"确定"按钮,等一会就发现整篇PPT文档在一个Word文档里被打开。 提示:在转换后会发现Word有很多空行。在Word里用替换功能全部删除空行可按"Ctrl+H"打开"替换"对话框,在"查找内容"里输入"^p^p",在"替换为"里输入"^p",多单击几次"全部替换"按钮即可。("^"可在英文状态下用"Shift+6"键来输入。)3.利用"另存为"直接转换打开需要转换的幻灯片,点击"文件"→"另存为",然后在"保存类型"列表框里选择存为"rtf"格式。现在用Word打开刚刚保存的rtf文件,再进行适当的编辑即可实现转换。4.PPTConverttoDOC软件转换PPTConverttoDOC是绿色软,解压后直接运行,在运行之前请将Word和PPT程序都关闭。选中要转换的PPT文件,直接拖曳到"PPTConverttoDOC"程序里。单击工具软件里的"开始"按钮即可转换,转换结束后程序自动退出。 提示:如果选中"转换时加分隔标志",则会在转换好的word文档中显示当前内容在原幻灯片的哪一页。转换完成后即可自动新建一个Word文档,显示该PPT文件中的所有文字。ps: 第四种慎用,百度上很多所谓的那个软件都是有病毒的,毒性不小,一般的杀毒软件查不出~~ PDF文档的规范性使得浏览者在阅读上方便了许多,但倘若要从里面提取些资料,实在是麻烦的可以。 二、把PDF转换成Word的方法 Adobe Acrobat 7.0 Professional 是编辑PDF的软件。 用Adobe Acrobat 7.0 Professional 打开他另存为WORD试试看。 或者用ScanSoft PDF Converte,安装完成后不须任何设置,它会自动整合到Word中。当我们在Word中点击“打开”菜单时,在“打开”对话框的“文件类型”下拉菜单中可以看到“PDF”选项,这就意味着我们可以用Word直接打开PDF文档了! ScanSoft PDF Converter的工作原理其实很简单,它先捕获PDF文档中的信息,分离文字、图片、表格和卷,再将它们统一成Word格式。由于Word在打开 PDF文档时,会将PDF格式转换成DOC格式,因此打开速度会较一般的文件慢。打开时会显示PDF Converter转换进度。转换完毕后可以看到,文档中的文字格式、版面设计保持了原汁原味,没有发生任何变化,表格和图片也完整地保存下来了,可以轻松进行编辑。 除了能够在Word中直接打开PDF文档外,右击PDF文档,在弹出菜单中选择“Open PDF in Word”命令也可打开该文件。另外,它还会在Outlook中加入一个工具按钮,如果收到的电子邮件附件中有PDF文档,就可以直接点击该按钮将它转换成Word文件。 有时我们在网上搜索到PDF格式的文件,同样可以通过右键菜单的相关命令直接在Word中打开它。 三、Word转换成PPT的方法

飞机大战MFC实验报告

实训报告 飞机大战游戏设计与开发

目录 1. 概述 (4) 2. 相关技术 (4) 2.1 透明贴图技术 (4) 2.2 CObList链表 (4) 2.3获取矩形区域函数 (4) 2.4弹出对话框函数 (5) 2.5字体的个性化输出函数 (5) 2.6设置定时器 (5) 2.7双缓冲技术 (5) 2.8 内存释放技术 (6) 2.9对话框中添加动态按钮 (6) 2.10检测方向键按下 (6) 3. 需求分析(用结构化方法或面向对象方法给出系统的主要需求模型) (6) 3.1功能需求分析 (6) 3.2 数据需求分析 (7) 3.3 行为需求分析 (7) 3.4 其他需求 (8) 4. 总体设计与详细设计 (8) 4.1 系统模块划分 (9) 4.2 主要功能模块 (10) 4.3 扩展功能设计思路 (10) 5. 编码实现 (11) 5.1游戏初始创建 (11) 5.2定时器 (11) 5.3背景及游戏开始、结束界面绘制函数 (11) 5.4键盘控制函数 (12) 5.5游戏对象进行碰撞测试和碰撞销毁 (13) 5.6创建动态按钮(开始游戏、游戏规则) (13) 5.6重新开始游戏代码 (14) 5.7设置游戏难度代码 (14) 5.8游戏结束时释放资源函数 (15) 5.9调整对话框大小函数 (15) 5.10开始界面背景绘制函数 (15) 5.11选择下一关卡以及选择完成后的执行代码 (16) 6.测试情况说明。 (17) 6.1主要模块测试情况(白盒) (17) 6.11各游戏对象碰撞检测爆炸模块测试 (17) 6.12战机导弹的方向速度模块测试 (17) 6.13文字显示,游戏结束和关卡进入模块测试 (18) 6.14设置游戏难度和重新开始模块测试 (18) 6.2 主要功能测试情况(黑盒) (18)

学习笔记整理

教授警句: 金钱铺路,酒肉搭桥。 过路难行钱作马,仇城易破酒为军。 用我的钱去买你的权,再用你的权去赚更多的钱。 夫人路线、线人路线、公子路线。 人生箴言: 政治上把握住方向, 感情上把握住原则, 行动上把握住分寸, 生活上把握住小节。 一昼夜24小时共有480万刹那间,一弹指为7.2秒,一瞬间为0.36秒,一念仅为0.018秒 做人要知足,做事要知不足,做学问要不知足。 百事孝为先,论心不论事,论事世上无孝子; 万恶淫为首,论事不论心,论心世上无完人。 第一部分公共管理部分 一、政府级别区分 1、中央政府 2、省级政府:22个省政府(包括台湾)、5个自治区政府(内蒙古自治区、宁夏回族自治区、广西壮族自治区、西藏自治区、新疆自治区)、4个直辖市政府(北京、天津、上

海、重庆)、2个特区政府(香港、澳门) 3、地区级政府(省辖区政府、自治州政府) 4、县级政府(县政府、民族自治县政府、县级市政府、旗政府)2300多个 5、乡级政府(乡政府、民族自治乡政府、镇政府) 二、原则 1、高度的中央政权 2、上一级政府只能下管一级政府(不能越级) 3、中央政府依法设机构,由政府负责决定(国务院组织法、编制法),地方政府设机构由地方政府决定(地方组织法参照国务院执行,国务院有的,地方可设可不设,国务院没有的不准设) 三、国务院的组成 1、职能机构:以部、委命名,以部为主,委为辅(中国人民银行、审计署特殊),名称必须前加中华人民共和国,为下部级。 2、直属机构:以局为主,以署为辅,为副部级,除海关总署外,其余不准前面加“中华人民共和国”而是加“国家”。 3、办事机构,以办公室命名,如侨务办公室,港澳事务办公室、台湾事务办公室,前加国务院。 3、办公机构(国务院办公厅,处理内部事务),下设国务

C++实验报告(MFC简单画图程序)

VC++程序设计实验报告 一、实验目的 掌握MFC编程 二、实验内容 用MFC向导创建单文档应用程序,一个简单的画图程序。 ?使用C++语言实现 ?使用VC++6.0集成开发环境开发 ?使用MFC应用程序开发框架 三、实验步骤 ?基本功能描述 1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、 曲线、矩形及椭圆,线宽选项,有1-6可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。 2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决 定图形的大小,当鼠标弹起,此图形则绘制完毕。 ?设计思路 1. 对需要用到的变量进行初始化。 2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。 3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。 4. 选择图形或其它属性,可进行下一次绘制。 ?软件设计 A 设计步骤 1.创建单文档 创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。创建成功后,系统自动生成相应的类,如图3所示。

图1 创建工程 图2 创建单文档

学习错题笔记整理方法

1. 错题本绝对不能代劳,不能是父母帮助抄录题目,不推荐电子版打印稿,要 2.孩子自己手抄! 抄录题目是一个非常重要的审题过程,在抄的时候,孩子能一个字一个字地再把题干过一遍,想一想,当时怎么就做错了呢! 退一万步讲,抄题,很辛苦是吧,那以后就少做错一点! 这也是内在动力有木有! 学习本来就是个人事情,如果这块要代劳那块要辅助,跟从妈妈嘴里接咀嚼过的食物有什么区别? 另外,逐渐造成的依赖该怎么解决?如果父母不在身边,没人帮忙抄题,那 就不做错题本了?! 电子版打印稿问题,统一“宋体,五号”字会比手写字给人的印象更深刻? 我估计“加粗、下划线、波浪线、文字底纹”等齐上阵也不会有黑、蓝、红三色 签字笔带来的视觉冲击大。而且,自己亲手一字一字写出来的,都是血泪的经验教训,珍贵的不能再珍贵了! 3. 错题本得是自己总结的! 很多人热衷于收集状元笔记本、错题本,之后呢?把那些高端大气的本都背 下来吗?再后呢? 打个比方,不是你自己的小孩,你会对他有特殊感情吗?一般人都不会。那拿着别人总结的错题本,除了敬佩和瞻仰,你还能得到什么,, 当然,我鼓励观摩经典错题本,学学成绩好的同学是怎样有效记录错题本的,但是,只有自己错的题,自己从头到尾重新想一遍,再写一遍之后才能让你明白:这道题为什么就错了! 4. 不要想着周末找个整块的时间一起总结! 这句话的最后结果就是:周末到了,啊呀,这么多题?! 要抄到什么时候啊,算了,挑几道写上去得了,, 作业、卷子再发下来就先自己琢磨,订正错题,自己总结哪里错了,记下来! 不会的题,等老师讲的时候认真听! 听完后跟之前的题一样,全都记下来! ( 不认真听,下次还错,不仅得再记,还得听老师父母唠叨“这题你怎么又 错了*&#¥*@%*”*) 下了课,抄一道题,才要多久! 但这就够了,整理错题本原本就是个琐碎的 活儿,剩下的就是坚持! 化大任务为小任务,各个击破! 如果写5 道题需要20 分钟,写50 道题肯定不会是200分钟( 要喝水、要休息、要活动一下,, 自己给自 己找理由,那借口海了去了) 5. 推荐用不同颜色的笔标注错题 我们的大脑对颜色等有对比的事物记忆效果更好,题干一个颜色,陈述错误一个颜色,真正错误一个颜色——刚好黑、蓝、红,整理好了,除了便于复习与 记忆,错题本还能赏心悦目呢?(我不会告诉你们,高中时就老捧着自己的错题本,不是要看题,而是欣赏我那整洁美丽的错题本,,)

教育心理学整理笔记

概念题及单选题(93题) 1、心理学:是研究人的心理和行为规律的科学。 2、心理过程:包括认知过程,情绪、情感过程,意志行为过程(知,情,意)。 3、单选:1879年,冯特在德国的莱比锡大学建立了第一个心理学实验室,标志着科学的 心理学的诞生。 4、桑代克:美国著名心理学家,1903年出版了《教育心理学》,标志着现代教育心理学的 诞生,是现代教育心理学的奠基人。 5、心理学简史:(单选)学派名称,代表人物,基本观点 1)构造主义:学派的奠基人为冯特,代表人物为铁钦纳。认为心理和意识是由元素构成。 2)机能主义:创始人美国著名心理学家威廉詹姆斯,代表人物杜威。机能主义强调意识的作用与功能,主张心理学应该研究心理的基本功能和作用。(哲学基础为实 用主义)(意识流) 3)行为主义:创始人是美国心理学家华生,代表人物有桑代克、斯金纳和巴甫洛夫。主张心理学应该研究可观察、可操作的行为,强调刺激——反应联结。 4)格式塔心理学:创始人是韦特海默、卡夫卡和苛勒,强调整体大于部分之和,也称为完 形主义心理学。 5)精神分析心理学:代表人弗洛伊德,提出“潜意识流”,把意识分为:意识——前意识 ——潜意识;并提出“人格结构理论”,认为人格包括:“本我”、 “超我”和“自我”,“本我”遵循快乐原则,“超我”遵循道德原则, “自我”遵循现实原则。 6、认知心理学:又叫信息加工心理学,认为心理过程实际上是一个信息加工的过程,代表 人皮亚杰。 1)7、人本主义心理学:代表人马斯洛、罗杰斯。强调存在、价值,认为人性是善的,每个人都是受自我实现倾向引导的。 8、教育心理学:是研究学校教育过程中学生的学和教师的教的基本心理规律的科学。 9、教育心理学的研究方法:实验研究法、相关研究法和描述性研究法,三者之间的关系是 “相关未必因果,因果一定相关”。 10、实验研究法:是指通过操作自变量、控制额外变量、测量因变量,以此推断自变量和 因变量之间是否存在因果关系的方法。(实验法揭示因果关系) 11、教师期望效应:教师对学生的期望会使学生朝向期望的方向发展,又叫“皮格马利翁 效应”,也称“罗森塔尔效应”。(赏识教育) 12、教师威信:是指教师在学生心目中的威望和信誉。 13、教学效能感:指教师对自己影响学生学习行为和学习成绩的能力的主观判断。 14、自我效能感:由班杜拉提出,是指个体在面对任务时,对自己能否有效应对任务能力 的主观判断和信念。 15、教师风格:是指在计划相同的教学前提下,教师根据各自的特长,经常所采用的教学 方式方法的特点。 16、教学监控能力:是指教师对教学的计划、监控和调节能力。体现三个方面:1)、教师 对自己的教学活动的预先计划和安排;2)、对自己实际教学活动进行 有意识的监察、评价和反馈;3)、对自己的教学活动进行调节、校正 和有意识的自我控制。 17、师爱的心理功能:激励、感化、调节、榜样 18、学习:是指在经验的基础上,通过与后天环境的相互作用而形成的行为和行为潜能的

《MFC》实验报告模板

贵州大学实验报告 学院:梁玉涛专业:计算机科学与技术班级:计科职091 姓名梁玉涛学号0920020217 实验组 1 实验时间2011.10.25 指导教师曾劼成绩 实验项目名称使用计算数据画直方图 实 验目的1.了解图形设备接口GDI编程; 2.学会应用GDI编写应用程序; 3.实现使用计算数据画直方图。 实 验要求1.了解有关GDI的相关知识及使用; 2.根据实验指导书完成实验内容。 实 验原理 图形设备接口GDI(Graphics Device Interface)是一个系统库,允许对系统的硬件进行独立于设备的访问。GDI的核心是设备上下文类DC(Device Contex):设置绘图属性和驱动设备绘图的方法。封装了Windows API中的画图函数,设备上下文是内存中的一个对象,设备可以是屏幕或打印机。 实 验 仪 器 计算机、VC++ 6.0 实验步骤1.使用AppWixard生成单文档工程Plot 2.在PlotDoc.h中类CPlotDoc的定义之前加入类Max的定义 3.在PlotDoc.cpp的文件尾部加入类Max的实现部分 4.为CPlotDoc类增加一个公有的void类型的成员函数Find和一个公有int数据成员数组m_num[5],使用类产生对象并计算它们的最大值,将它们转换成int,存入整数数组m_num。 5.为CPlotDoc类的成员函数OnNewDocument增加调用语句准备数据。 6.在视类中画图写字; 7.运行程序,并观察结果。 1

实 验 使用计算数据画直方图 内 容 实 验 数 据 实 验 总 结 指 导 教 师 意 见签名:年月日

医学科研方法----笔记整理

医学科研方法学 第一章 概论 研究(research 是有计划和有目的的探索和创造的过程。 一、 科学研究的概念:运用科学的方法,探索未知的现象,揭示客观规律,创造 新理论、新技术、开辟知识新应用领域的智力性劳动。 联合国教科文组织界定的 科技活动包括研究与试验性发展活动( R&D )、科技教育与培训活动 (STET)、 科学技术服务活动(STS)。在我国科研工作一般特指R&D 。科研活动的主要特征 有: 1.探索性与创新性:这是科研工作区别于一般劳动性工作之所在。探索的目的 在于获得新的认识、发现新的事实、阐明新的规律、建立新的理论、发明新的技 术、研制新材料、新产品,探索是手段,创新是目的。 2.继承性和积累性:科学研究工作必须建立在科学的方法和知识的基础上,而 这些方法和知识是人们通过大量的科学研究所积累发展形成的, 我们利用了这些 方法和知识, 就体现了科学研究的继承性, 同时我们在科学研究中的创新, 也为 科学的发展积累了知识。 科学研究首先是收集和积累相关信息, 对他人的研究工 作、思路、方法进行分析、评价,提出自己的研究目标、任务和方案。 二、 医学科学研究的特征 医学科学研究具有一般自然科学研究的特征, 还具有研究对象的特殊性和研究工 作的复杂性。 医学研究的三个层次:①群体水平;②器官组织水平;③细胞分子水平。 医学研究的对象:①人,包括正常人和病人;②离体组织细胞;③动物。 医学研究的方法:①观察法;②实验法;③理论法。 医学研究的场所:①社区;②医院;③实验室。 医学研究的三个基本环节:①设计;②衡量;③评价。 、医学研究的基本过程 选题 设计 实施 分析 报告 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 四、医学研究的分类 1. 按照科技活动类型分 ① 基础研究:增加知识、探索未知、解决理论问题。基础医学主要研究的内容。 产生社会效益。 ② 应用研究: 利用基础理论针对某一问题提出解决的方案和方法。 预防医学和临 床医学主要研究的内容。产生社会效益为主。 ③ 开发性研究:研制新产品、新技术,产生经济效益。 2. 按照研究方法分 ① 观察性研究:描述性研究、分析性研究。 ② 试验性研究:动物试验、临床试验、社区干预试验。

整理收拾的小窍门

整理收拾的小窍门 整理收拾的小窍门“隐形收纳技”——藏起大件厚重衣物 先用真空压缩袋,把厚重衣物、被毯体积魔法般变小,然后放入大整理箱,再藏入衣柜顶部,或者床底下,不用的大件衣物就看不见喽。 双面掀盖式整理箱,适放于床下等狭窄空间,隐形不占地儿,封闭收纳纺潮防霉。 “吊挂收纳技”——衣物排排乐 懒人们不喜欢叠衣服,喜欢将衣服往衣柜里一挂,但也需要有规可循。衣柜由左至右要按大衣、洋装、夹克、裤子、裙子、衬杉的顺序来挂衣服。选择多功能的衣架、置物架,最大限度的使用有限空间,方便存取。 “创意收纳技”——鞋柜空间省半 对于爱美的女性,鞋柜里总是不停的添置新鞋,巧妙利用鞋架可节省1/2的鞋柜空间,存放更多的鞋子。当下时常穿的鞋子,可试试立式壁面收纳工具,打破了鞋子只能平放的传统,只要一面墙,就能收纳多双鞋子,增强了摆放空间。 “折叠收纳技”——节省空间威力大 衣服的收纳有个秘诀,就是“折叠”。只要折叠好,几乎收纳问题都可解决。内衣的放置,可选择整理盒与隔板组合使用“直

立”法放置,不但拿取不会倒,更加整洁有序哦;也可以利用收纳箱进行分类收纳。 鞋柜的收拾整理1、当鞋柜发出臭烘烘的味道时,人们都是快速的把鞋子扔进去,弄的鞋柜乱七八糟的。用一个塑料盒或者塑料瓶装点小苏打粉,再往小苏打粉上滴五六滴花露水,不要盖上,放进鞋柜就可以了。如果花露水风干,记得补充即可。因为小苏打粉能有效吸附湿气比如脚汗,花露水含大量酒精成分能有效去异味。 2、樟脑丸也是去除鞋柜臭味的方法,不过这个味道比较难闻,很多人不太容易接受。但还是比鞋臭味好闻。值得一提的是,家有孕妇千万不要用这招,很可能会导致流产的。 3、比较安全去除鞋柜臭味的方法,可以选择一块香皂,当然香皂可以选择自己喜欢的味道,然后把香皂打开,放在香皂盒内。然后放在鞋柜就可以。尤其是放那种手工皂,打开鞋柜就有一股香香的味道,非常好闻!也就几块钱,就算永远放在鞋柜也不心疼! 4、还有一个方法就是利用茶叶渣和咖啡渣,放在鞋柜中。但是这个效果不是很好,一般一个星期就没有什么味道了。所以大家为了让鞋柜更加整洁,没有臭味可以尝试一下废物利用。 5、使用柚子皮和橘子皮也是去除鞋柜臭味的方法,主要就是要把吃完的柚子皮,切开,然后直接的放在鞋柜中,整个鞋柜就会有水果的清香味道。 6、当然家具鞋柜的臭味,还是需要家具根本的问题也就是鞋臭,洗鞋的时候可以用白醋泡一泡再洗,阳光晒干后就不会有味道了。运动完脱下来的鞋子别立马塞到鞋柜里,放在通风的地方

c面向对象程序设计MFC简单计算器实验报告

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东 学生学号:2011508154 专业班级:电子信息工程(1)班 指导教师:高攀

1 课程设计的题目 编写一个能实现简单功能的计算器 2 题目要求 1. 有一个计算器图形。 2. 能实现加、减、乘、除及乘方的运算。 3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色 例如:输入数字1 时,在计算器图形上的1键变为红色。 4. 屏幕、图形颜色、形状自定 3 总体设计 3.1 总体框架 图1 系统框架

3.2 系统功能说明 在VC++6.0中绘制计算器界面,各控件的设置 对0~9控件设定相应的ID和其他属性: 图2 “1”控件设置 对“+、-、*、\”控件设定相应的ID和其他属性: 图2 “+”控件设置 对其它控件设定相应的ID和其他属性: 图3 其它控件设置

主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。 4 程序详细设计 4.1系统主调模块 图5 程序流程图

4.2各模块详细设计 4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表 double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。 double m_Dis; //Edit控件上需要显示的数字 BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。 double numfirst; //保存计算过程中的前一个数字, double numsecond;//保存计算过程中的第二个数字 char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’ 变量初始化: poz=1; m_Dis = 0.0; numfirst=0; numsecond=0; op=0;

各类设计元素整理分类

各类设计元素整理分类: 1.中国元素 凡是被大多数中国人(包括海外华人)认同的、凝结着中华民族传统文化精神,并体现国家尊严和民族利益的形象、符号或风俗习惯,均可被视为“中国元素”。中国的企业及品牌更是中国元素的重要组成部分。 “中国元素”不仅仅是传统文化的一种象征。不可能是西方文化的简单补充润饰,不应该狭窄地定义为宣扬民族主义的旗号。以“中国元素”作为创意语言更不应该视为一种时尚的新名词。诚然,有一种不可争辩的事实,当世界经济离不开持续增长的中国经济时,世界文明也离不开中国文化。因为中国文化是人类不可或缺的重要组成部分。孕育着中国文化精神的“中国元素”将会为中国品牌走向世界奠定自信,它会承担起融入世界、影响世界的时代使命。 “中国元素”应分为三部分,第一是中国固有元素:比如中国的领土(包括300万平方公里的领海),中国的人种,中国的气候等等;第二是中国传统文化元素:这个不做累述;第三是中国的现代文化元素:比如北京的奥运精神,中国的航天精神,中国的电影文化,中国著名企业的文化等等。 中国元素——凡是在中华民族融合、演化与发展过程中逐渐形成的、由中国人创造、传承、反映中国人文精神和民俗心理、具有中国特质的文化成果,都是中国元素,包括有形的物质符号和无形的精神内容,即物质文化元素和精神文化元素。如思想意识、道德观念、价值体系、民俗事象、生活习惯、宗教信仰、建筑、艺术、科技、法律、伦理等,上至三皇五帝,下到宋元明清,大到故宫长城,小至窗棂门钉。中国传统文化都是中国元素,但中国元素不全等于中国传统文化,还包括中国现代文化。 ——郭有献《中国元素与广告创意》北京大学出版社 中国元素分类 ①现代著名建筑及伟大成就类 ②著名历史人文景观类 ③重大发明创造、创举类 ④民俗节日、手工艺、服饰、特色食品等类 ⑤传统戏曲、乐器、体育项目类 ⑥重要学术思想、著作类

MFC计算器实验报告

实验报告一——计算器 一实验名称 简易计算器 二实验目的 在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。 三编程思路 计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。 给Dlg添加变量int m_operator; //运算符 double m_result; //结果(含中间变量) 另外添加编辑框的变量m_res 1.对数字按钮的响应函数的编写 1)由于每个按钮的响应函数相差不大,故用一个函数将其封装 在每次输入时要先判断数据开头是否为0 void CMy0710210202CalculateDlg::button(CString c) { UpdateData(TRUE); m_res+=c; if(m_res.GetAt(0)=='0'&&m_res.Find(".")==-1){ m_res.Empty(); m_res+=c; } UpdateData(FALSE); } 2)小数点按钮的响应函数。 首先要判断输入数据中是否已有小数点,数据是否为0,以及是否还没输入数据。 void CMy0710210202CalculateDlg::OnDian() { // TODO: Add your control notification handler code here UpdateData(TRUE); int n=m_res.Find("."); if(n==-1&&m_res.GetLength()!=0) m_res+="."; else if(m_res.GetLength()==0)m_res+="0."; UpdateData(FALSE); } 2.运算符按钮的响应函数的编写 用m_operator指代要进行的运算,由于每次的运算结果m_result 都传入了编辑框的变量m_res里,故此程序可以实现连续运算。 代码为 void CMy0710210202CalculateDlg::Result() { UpdateData(TRUE);

高效率学习方法及课堂笔记整理技巧

高效率学习方法及课堂笔记整理技巧 每天自主学习的学习效果如何,直接影响到各科的成绩。你知道如何支配每晚的学习时间吗? 把书读薄,其实就是总结重点、难点,认清自己薄弱环节的过程。 针对教材,提炼重点和难点。 在纸上列大纲,列大纲的时候可以将每个知识点简化为一个你自己能看懂的提示词,看到提示词能回想并复述出知识点即可。 大纲可以多列几次,每一次都比上一次更加精炼,如此反复,最终让厚厚的教材变成薄薄的几张纸。 把书读薄之后,别忘了把练习册也读薄,针对练习册和过往试卷,需重点提炼薄弱环节,就是建立错题本。 错题本也需要有一个越做越薄的过程,最终做到错题本中的题目都可以不看答案和提示就做出来。 电脑里的东西如果杂乱无章地堆在C盘里,等要用的时候就会很难找,甚至根本不记得自己有过这个文件。 如果把这些东西分门别类存放在不同的文件夹,要用的时候就特别好找,分分钟就能调取。 学习也是同理。 复习中有一个重要步骤,就是将知识进行整理、归纳、合并,搭建起属于自己的知识体系,让记忆空间井然有序。 整理的过程可以用思维导图法,就像神经网络似的,发散着画,不用管画得好看不好看。

画着画着你就能找到知识点之间的联系,牵一发而动全身地记住并掌握它们。 这种方法的关键就是小卡片。 嫌小卡片容易丢的同学可以用巴掌大的小本子代替,把零碎的、需要记忆的知识点写在小卡片或小本子上。 比如英文单词、常用短语、英文佳句、语文科目中要求默写的古诗文段落等等,晚上见缝插针看上两分钟,往往就能起到意想不到的巩固效果。 考前临时抱佛脚是最不靠谱的学习方法,即便当时记住了,过后也会飞速忘掉。 要想提升学习效果,还得靠持续性的分散学习,各科根据掌握程度和优先等级,分别制定学习计划,然后将任务合理分配到每一晚。 这一方法的关键就是,学习计划越细越好,每天复习哪几科的哪几块儿知识,每科复习多长时间都列好,然后尽力按计划复习,这也能避免时间分配不均而导致的“某些知识点没空复习”的尴尬。 分散复习的同时,也需注意学科交叉,就是每天别只盯着1科复习,复习1小时数学就换换脑子,去复习1小时语文,别连续复习2小时数学,避免产生厌倦心理。 估计不少孩子都有这个习惯:按课本顺序复习,从第一章开始,慢慢复习到最后一章,刚开始的复习劲头挺大,越往后越累越松懈。 但课本的设计通常都是由浅至深,开头几章简单,越到后面几章就越复杂、越综合,也越容易出现学习漏洞。 所以干嘛不从重点难点开始复习呢? 对某些科目而言,后面几章节的内容往往会牵涉到前面几章节。

教育学笔记(表格式整理版)精华

教育学 一、教育与教育学 二、教育与社会的发展 三、教育与人的发展 四、中学教育(教育目的与教育制度) 五、学生与教师(师生关系) 六、中学课程 七、中学教学 八、中学德育 九、班主任与班级管理 一、教育与教育学 (一)教育的发展 1教育活动中的三结合——社会教育、学校教育、家庭教育 教育的本质属性是——一种有目的的培养人的社会活动 2教育三大要素——教育者、受教育者、教育影响 3教育起源论:生物起源说(各类动物的生存本能)利托尔诺、沛西·能 心理起源说(源于儿童对成人的无意识模仿)孟禄 劳动起源说(源于劳动过程中社会生产需要与人的发展需要的辩证统一) 米丁斯基、凯洛夫 4

(二)教育学的发展 1教育学时一门以教育现象与教育问题为研究对象,探索教育规律的学科2中国古代教育学思想

二、教育与社会的发展 (一)教育与生产力 1生产力水平决定教育的规模与速度 2教育对生产力有促进作用 (1)教育再生产劳动力(把可能的劳动力转化为现实的劳动力,形成新的劳动力,提高劳 动效率) (2)教育再生产科学知识(使原本由少数人掌握的科学知识为更多人掌握) (二)教育与科学技术 1学校教育是科学知识再生产的最主要途径。 (三)教育与文化 1教育与文化之间的关系——相互依存,相互制约 文化对教育——影响教育目的、内容、教学方法的确立 教育对文化——具有筛选、整理、传递、保存传播、交流更新、创造文化的作用 2教育与文化关系的特殊性 文化本身是一种教育力量

教育本身是一种特殊文化——具有双重文化属性:传递和深化文化的手段、构成文化本体3学校文化是学校全体成员或部分成员习得且共同具有的思想观念和行为方式。 4学校文化的特点为:(一种组织文化、)(整合型较强的文化、)(以传递文化传统为己任)。5学校文化既能给学校预订教育目的带来积极影响也能带来消极影响,这是由学校文中蕴含的(丰富多样性)和(歧义性)决定的 6学校文化的核心是学校各群体所具有的(思想观念和行为方式),其中最具决定性的是(思想观念,特别是(价值观念) 7校园文化可分为(学校物质文化)、(学校组织和制度文化)、(学校精神文化) 8(学校精神文化)是校园文化的核心 9学校精神文化可以分为四种基本成分(认知成分)(情感成分)(价值成分)(理想成分)10校风是学校中物质文化、制度文化、精神文化的统一体,良好的校风对学生个性和品德有陶冶与导向作用 11教育的相对独立性是教育在一定范围内,一定程度上具有独立于政治、经济等其他社会现象的特性。 三、教育与人的发展 (一)个体身心发展 2个体身心发展的影响因素 四、教育目的与教育制度 (一)教育目的 1教育目的是把受教育者培养成一定社会所需要的人的总的要求。它规定把受教育者培养成什么样的人,是培养人的

(整理)分析方法答案汇总——最终.

紫外光谱,荧光光谱在材料研究中的应用 1、分子内的电子跃迁有哪几种,吸收最强的跃迁是什么跃迁? 电子类型:形成单键的σ电子;形成双键的π电子;未成对的孤对电子n电子。 轨道类型:成键轨道σ、π;反键轨道σ*、π* ;非键轨道n。 ①σ-σ* 跃迁 它需要的能量较高,一般发生在真空紫外光区。在200 nm左右,其特征是摩尔吸光系数大,一般εmax≥104,为强吸收带。饱和烃中的—C—C—键属于这类跃迁,如乙烯(蒸气)的最大吸收波长 max为162 nm。 ②n-σ*跃迁 实现这类跃迁所需要的能量较高,其吸收光谱落于远紫外光区和近紫外光区 ③π→π*跃迁 ●π电子跃迁到反键π*轨道所产生的跃迁,这类跃迁所需能量比σ→σ*跃迁 ●小,若无共轭,与n→σ*跃迁差不多。200nm左右。 ●吸收强度大,ε在104~105范围内,强吸收 ●若有共轭体系,波长向长波方向移动,相当于200~700 nm ●含不饱和键的化合物发生π→π*跃迁 ●C=O , C=C, C≡C ④n→π* ●n电子跃迁到反键π*轨道所产生的跃迁,这类跃迁所需能量较小,吸收峰在200 ~ 400 nm 左右 ●吸收强度小,ε<102,弱吸收 ●含杂原子的双键不饱和有机化合物 ?C=S O=N- -N=N- ●n→π*跃迁比π→π*跃迁所需能量小,吸收波长长 吸收最强的跃迁是:π→π*跃迁 2、紫外可见吸收光谱在胶体的研究中有重要作用,请举出三个例子来说明,并结合散射现象来讨论二氧化钛胶体和粉末漫反射光谱的差异。 举例:1)、胶体的稳定性,尤其是稀释后的稳定性; 2)、胶粒对可见光的散射; 3)、测定消光(包括吸收、散射、漫反射等对光强度造成的损失) 稀释条件下,胶粒尺寸小于光波长的1/20,瑞利散射可忽略。 4)、估算晶粒的大小。 5)、尺寸效应,会发生吸收边的蓝移或是红移,可以用来测定像是CdS 和CdSe的量子点。 (老师上课讲的三个例子是: ①胶体的稳定性 ②胶粒大小

周三多《管理学》笔记整理

《管理学-原理与方法》 第一篇总论 第一章管理与管理学 第一节人类的管理活动 一.人类活动的特点:目的性依存性知识性——管理实践悠久历史原因 二.管理的必要性 1.作为发展中国家,资源短缺将是一种长期的经济现象,特别是资金、能源、原材料往往成为企业和社会经济发展的桎梏。 2.作为发展中国家,科学技术落后是阻碍生产发展的重要因素之一。 3.高度专业化的社会分工是现代国家的企业建立的基础。 4.实现社会发展和企业或任何社会组织的发展的预期目标,都要靠全体成员长期的共同努力。 5.近几年来,以计算机技术为基础,信息网络、互联网等在中国各行各业中得到了空前迅速的应用和普及。 三.管理的定义 管理是管理者为了有效地实现组织目标、个人发展和社会责任,运用管理职能进行的协调的过程。 (一)管理是人类有意识有目的的活动 管理不再单纯是为了实现组织目标,同时也要十分关注实现组织中每个人的发展和实现组织的社会责任。 (二)管理应当是有效的 不仅要有较高的效率,同时还要有较好的效果。 (三)管理的本质是协调 协调包括两方面内容。一是组织内部各种有形和无形资源之间的协调;二是组织与外部环境的协调。 (四)协调是运用各种管理职能的过程 第二节管理的职能与性质 一.管理的职能 计划、组织、领导、控制、创新这五种职能是一切管理活动最基本的职能。 (一)决策 组织中所有层次的管理者,都必须从事计划活动。 (二)组织 计划的执行要靠他人的合作。 组织目标决定着组织结构的具体形式和特点。 组织职能是管理活动的根本职能,是其他一切管理活动的保证和依托。 (三)领导 需要有权威的领导者进行领导,指导人们的行为,通过沟通增强人们的相互理解,统一

知识整理的常用方法

知识整理的常用方法 知识整理的重要性:一、提高能力,二、提高效率,巩固知识。 知识整理的方法 一.图表式整理:以图表的形式对课本某一知识点进行整理。 ·优点:直观形象,提高记忆效率,巩固记忆效果 ·缺点:可能会影响表达的条理性 ·适用范围:对某一具体知识点的识记、理解 ·举例:“实践”的含义: 二.对比式整理:采取“对比”的形式,分清容易混淆的知识点的关系(区别与联系)。 ·优点:强化理解,避免误区 ·缺点:应用频率较低 ·适用范围:相关性强、相似程度高的知识点理解 ·举例:“取其精华,去其糟粕”与“推陈出新,革故鼎新”的关系 三.要点式整理:提炼课本中的“观点性”语言,按课本既定框架作“去粗存精”式的整理。 ·优点:容易操作,方便记忆 ·缺点:知识点的系统性、条理性不强 ·适用情况:框题知识点的及时掌握 ·举例:《第一单元〈文化与生活〉基础知识要点整理》 第一单元《文化与生活》基础知识要点整理 第一课文化与社会 第一框题:体味文化 1.文化“万花筒” (1)历史上,文化现象无时不在;生活中,文化现象无处不在。 (2)无论身处何地,人人都有自己的异彩纷呈的文化生活。 2.文化是什么 (1)文化是相对于经济、政治而言的人类全部精神活动及其产品。其中,既包括世界观、人生观、价值观等具有意识形态性质的部分,又包括自然科学和技术、语言和文字等非意识形态的部分。 (2)文化是人类社会特有的现象,文化是人们社会实践的产物。 (3)人们在社会实践中创造和发展文化,也在社会生活中获得和享用文化。 (4)文化通过物质载体,在历史上和现实中得到传承和发展。 3.文化的力量 (1)文化有非常丰富的形式,是一种社会精神力量。 (2)文化作为一种精神力量,能够在人们认识世界和改造世界的过程中转化为物质力量,对个人和国家民族都产生深刻的影响。 四.问题式整理:打破课本单元、课题、框题、目题的设置,以“问题—答案”的形式对课本知识点进行整理。 ·优点:一问一答,条理清楚,知识清晰;有利于培养主观题的答案习惯 ·缺点:容易形成思维定势 ·适用情况:单元、全书知识点的针对性掌握 ·举例:如果要以“是什么”、“为什么”、“怎么样”三大类型的问题对第二单元知识点进行整理,我们可以设置相关的问题并根据课本的知识点附上简要答案。比如,“是什么”中可提问:传统文化是什么、文化遗产是什么、实践是什么、文化发展的实质是什么等;“为什么”中可提问:为什么要尊重文化的多样性、为什么要强调文化创新等;“怎么样”中可提问:怎样理解社会实践与文化创新的关系、怎样进行文化创新等。 五.知识框架整理:打破课本单元、课题、框题、目题的设置,将相关性强的知识点以框架的形式进行整理。 ·优点:知识点的系统性、条理性强

相关主题
文本预览
相关文档 最新文档