VC基本常识.docx

上传人:b****6 文档编号:7417376 上传时间:2023-01-23 格式:DOCX 页数:17 大小:27.29KB
下载 相关 举报
VC基本常识.docx_第1页
第1页 / 共17页
VC基本常识.docx_第2页
第2页 / 共17页
VC基本常识.docx_第3页
第3页 / 共17页
VC基本常识.docx_第4页
第4页 / 共17页
VC基本常识.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

VC基本常识.docx

《VC基本常识.docx》由会员分享,可在线阅读,更多相关《VC基本常识.docx(17页珍藏版)》请在冰豆网上搜索。

VC基本常识.docx

VC基本常识

VC基本常识(转)

(2010-02-0308:

35:

34)

转载

标签:

类对象

this

if

tpm

it

分类:

C/CPP

AfxMessageBox("Copy");表示弹出一个消息框消息是Copy;

1.启动界面的步骤

 a.创建一个单文档框架

 b.在工程菜单里选择添加工程

 c.在添加工程里选择ComponentsandControlsGallery

 d.ComponentsandControlsGallery里选VisuanC++Components

 e.VisuanC++Components里选择SplashScreen控件

 f.如果想改动启动界面只需要加入新的位图替换原来的位图

 g.如果想延长界面显示时间可以调节SetTimer(1,1520,NULL);第一个参数对应nIDEvent

2.给菜单里添加位图的步骤

 a.创建一个单文档框架

 b.在视类里添加CBitmap类对象;需要几个位图就添加几个对象

 c.在视类的构造函数里调用CBitmap类对象的成员函数LoadBitmap(位图ID);

   初始化CBitmap类对象

 d.在视类里的OnDraw(CDC*pDC)函数添加一下函数

 e.   CWnd*parent=GetParent();

 CMenu*pmenubar=parent->GetMenu();

 CMenu*pmenu=pmenubar->GetSubMenu(0);

 pmenu->SetMenuItemBitmaps(0,MF_BYPOSITION,&bm_New,&bm_New);

 pmenu->SetMenuItemBitmaps(1,MF_BYPOSITION,&bm_Open,&bm_Open);

 pmenu->SetMenuItemBitmaps(2,MF_BYPOSITION,&bm_Save,&bm_Save);

3.改变主窗口的大小形状的步骤!

 a.创建一个单文档框架

 b在MainFrm类中添加消息函数WM_SIZE(OnSize())

 c在OnSize()中添加一下函数就可以了:

 d    CRgnm_rgn;

 CRectrc;             

 GetWindowRect(&rc);     

 rc-=rc.TopLeft();       

 m_rgn.CreateRoundRectRgn(rc.left,rc.top,rc.right,rc.bottom,100,100);   

 SetWindowRgn(m_rgn,TRUE);

4把主窗口分成几部分的步骤

 a.创建一个单文档框架

 b在MainFrm类中重载虚拟函数OnCreateClient(在类向导里可以找到该虚拟函数)

 c.在MainFrm类中添加CSplitterWndm_Splitter类对象;

 d.OnCreateClient虚拟函数中添加如下代码

      CRectcr;

 GetClientRect(&cr);

 CSizepaneSize(cr.Width()/3,cr.Height()/3);

 m_Splitter.CreateStatic(this,3,1);

 m_Splitter.CreateView(0,0,RUNTIME_CLASS(CExampleView),paneSize,pContext);

 m_Splitter.CreateView(1,0,RUNTIME_CLASS(CExampleView),paneSize,pContext);

 m_Splitter.CreateView(2,0,RUNTIME_CLASS(CExampleView),paneSize,pContext);

 returnTRUE;

5.在主窗口的两边创建滚动条的步骤

 a.创建一个单文档框架

 b在MainFrm类中重载虚拟函数OnCreateClient(在类向导里可以找到该虚拟函数)

 c.在MainFrm类中添加CSplitterWndm_Splitter类对象;

 d.OnCreateClient虚拟函数中添加如下代码

      returnm_Splitter.Create(this,2,2,CSize(10,10),pContext);

6.创建透明图形的步骤

 a.创建一个对话框框架

 b.在OnInitDialog()函数中添加以下代码,画出图形

 HRGNm_wndRgn;

 CClientDCdc(this);

 CFontmFont; 

 mFont.CreateFont(200,50,0,0,FW_HEAVY,FALSE,FALSE,0,ANSI_CHARSET,

  OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

  DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"宋体");                 

 //openapathbrackets,anapplicationcanbegincallingGDI

 //drawingfunctionstodefinethepointsthatlieinthepath.

 dc.BeginPath();  

 dc.SetBkMode(TRANSPARENT);  

 CFont*pOldFont;

 pOldFont=dc.SelectObject(&mFont);

 dc.TextOut(0,0,"◎◎"); 

 dc.EndPath();

 m_wndRgn=:

:

PathToRegion(dc);

 this->SetWindowRgn(m_wndRgn,TRUE);  

 dc.SelectObject(pOldFont);

 c.进入MFCClassWizard,在ClassInfo下的Messagefilter选择Window,

   然后在回到MessageMaps中找到(WM_NCHITTEST)添加该消息函数

  图形就会随着鼠标移动

 d.在该消息函数中添加以下代码

  UINTnHitTest=CDialog:

:

OnNcHitTest(point);

  return(nHitTest==HTCLIENT)?

HTCAPTION:

nHitTest;

7.创建界面缓缓进入,缓缓退出的效果

 a.创建一个单文档框架

 b.在StdAfx.h文件的开始部分添加以下代码

   #undefWINVER

   #defineWINVER0x500

 c.在OnCreate()消息函数中添加以下代码

   AnimateWindow(GetSafeHwnd(),1000,AW_SLIDE|AW_HOR_POSITIVE);

 d.创建OnClose()消息函数并添加以下代码

   AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_CENTER);

8.给某一个控件设置鼠标,比如给button按钮设置鼠标的步骤

 a.创建一个对话框框架

 b.在MFCClassWizard创建(WM_SETCURSOR)消息函数

 c.在该函数下添加以下代码

    CStringsClassName;

 HCURSORm_Cursor;

 :

:

GetClassName(pWnd->GetSafeHwnd(),sClassName.GetBuffer(80),80);

 if(sClassName=="Button")

 {

  m_Cursor=AfxGetApp()->LoadCursor(IDC_CURSOR1);

  :

:

SetCursor(m_Cursor);

  returnTRUE;

 }

9.在对话框中添加menu菜单的步骤

 a.创建一个对话框框架

 b.在ResourseView中建立Menu菜单,

 c.在ResourseView中打开Dialog对话框在属性对话框里在MENU选项下选择

10.在对话框中添加ToolBar的步骤

 a.创建一个对话框框架

 b.在ResourseView中建立Toolbar工具条

 c.在Dialog类的OnInitDialog()函数中添加以下代码

       CRectrect;

 GetClientRect(rect);

 if(!

m_wndToolBar.Create(this))

 {

  TRACE0("Failedtocreatetoolbar\n");

  return-1;  //failtocreate

 }

 m_wndToolBar.LoadToolBar(IDR_TOOLBAR1);

 m_wndToolBar.MoveWindow(100,0,rect.right,32);

 d.根据Toolbar里的图形ID号!

创建一个消息函数!

添加以下代码

   AfxMessageBox("Click!

");单击该图型就会有个消息框!

 e.

11.在对话框中添加StatusBar的步骤

 a.创建一个对话框框架

 b.在StringTable中添加两个状态值

 c.在对话框类.h里添加CStatusBar类对象;

 d.在对话框类.cpp里添加以下代码:

  staticUINTindicators[]=

  {

     IDS_PANEL1,//为StringTabl里添加的ID值

     IDS_PANEL2,

  };

   和OnInitDialog()函数里添加

     CRectrect;

 GetClientRect(rect);

 //状态条

 if(!

m_wndStatusBar.Create(this)||!

m_wndStatusBar.SetIndicators(indicators,

  sizeof(indicators)/sizeof(UINT)))

 {

  TRACE0("未能创建状态栏\n");

  return-1;     //未能创建

 }

 m_wndStatusBar.MoveWindow(0,rect.bottom-20,rect.right,20);

12.添加CDialogBar的步骤

 a.创建一个单文档框架

 b.在MainFrm.h中添加一个public:

型CDialogBarm_wndDialogBar对象;

 c.在MainFrm.cpp中的OnCreate(LPCREATESTRUCTlpCreateStruct)函数中添加如下代码

     m_wndDialogBar.Create( this,IDD_DIALOG1,CBRS_TOP|CBRS_GRIPPER|

       CBRS_TOOLTIPS|CBRS_FLYBY|

       CBRS_SIZE_DYNAMIC,

       IDD_DIALOG1);

 m_wndDialogBar.EnableDocking(CBRS_ALIGN_ANY);

 EnableDocking(CBRS_ALIGN_ANY);

 DockControlBar(&m_wndDialogBar);

13.制作橡皮球的步骤

 a.创建一个单文档框架

 b.在视图类.h中添加CRectTrackerm_tracker;类对象,和左键消息

 c.在视图类的初始化函数中添加以下代码

     m_tracker.m_rect.SetRect(0,0,30,30);

 m_tracker.m_nStyle=CRectTracker:

:

resizeInside|CRectTracker:

:

dottedLine;

 d.在视图类的OnDraw()函数中添加以下代码

     CBrushbrush(RGB(0,255,255));

 CBrush*pOldBrush=pDC->SelectObject(&brush);

 CRectrcEllipse;

 m_tracker.GetTrueRect(rcEllipse);

 pDC->Ellipse(rcEllipse);

 m_tracker.Draw(pDC);

 pDC->SelectObject(pOldBrush);

 c.在视图类的OnLButtonDown()消息函数中添加以下代码

   CExampleDoc*pDoc=GetDocument();

 ASSERT_VALID(pDoc);

 BOOLbResult=m_tracker.HitTest(point)!

=CRectTracker:

:

hitNothing;

 if(bResult)

 {

 

  m_tracker.Track(this,point,true);

  pDoc->SetModifiedFlag();

  pDoc->UpdateAllViews(NULL);

 }

 else

  m_tracker.TrackRubberBand(this,point,true);

14。

给右键添加属性的步骤

 a.创建一个对话框框架

 b.加入一个Menu资源

 c.创建WM_CONTEXTMENU消息函数并加入以下代码

     CMenumenu;

 menu.LoadMenu(IDR_MENU1);

 menu.GetSubMenu(0)->TrackPopupMenu(

    TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON, 

    point.x,point.y,this);

      单击右键就可以出现属性条

 

15.改变对话框图标的方法

 a.创建一个对话框框架

 b.创建两个图标其ID值分别为(IDI_ICON1);(IDI_ICON2);

 c.添加WM_LBUTTONDOWN消息并添加如下代码

     HICONhIcon=AfxGetApp()->LoadIcon(IDI_ICON1);

 ASSERT(hIcon);

 AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

 //修改大图标

 AfxGetMainWnd()->SendMessage(WM_SETICON,FALSE,(LPARAM)hIcon);

 //修改小图标 

 d.添加WM_RBUTTONDOWN消息并添加如下代码

     HICONhIcon=AfxGetApp()->LoadIcon(IDI_ICON2);

 ASSERT(hIcon);

 AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

 //修改大图标

 AfxGetMainWnd()->SendMessage(WM_SETICON,FALSE,(LPARAM)hIcon);

 //修改小图标 

16.切换菜单语言的步骤

   a.创建一个单文档框架

   b.创建两个一样菜单,分别用中英文表示

   c.在MainFrm.h中创建两个菜单对象用于保存中英文资源

   d.根据menu_id号创建两个消息函数分别加入以下号码:

       SetMenu(&m_pChinese);//把菜单设置为汉语

       SetMenu(&m_pEnglish);//把菜单设置为英语

   e.在OnCreate()函数中加入如下代码

       m_pChinese.LoadMenu(IDR_MAINFRAME_CN);//调入中文菜单资源

 m_pEnglish.LoadMenu(IDR_MAINFRAME_EN);//调入英文菜单资源 

 SetMenu(&m_pEnglish);

17。

在状态栏里显示时间的步骤

  a.创建一个单文档框架

  b.在stringTable里添加ID_INDICATOR_CLOCK标识号标题为0000-00-0000:

00:

00

  c.创建WM_TIMER消息函数并如以下代码

      if(nIDEvent==1)

 {

  CTimet;

  t=CTime:

:

GetCurrentTime();

  CStringstr=t.Format("%Y-%m-%d%H:

%M:

%S");

  m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(

                         ID_INDICATOR_CLOCK),str); 

 }

  d.创建WM_CLOSE消息函数并加入以下代码

      KillTimer

(1);

  e.OnCreate()函数里添加以下代码

       SetTimer(1,500,NULL);

  f在MainFrm.h的开头处加入以下代码替换原来的代码

      staticUINTindicators[]=

     {

 ID_SEPARATOR,          //statuslineindicator

 ID_INDICATOR_CLOCK,

 ID_INDICATOR_CAPS,

 ID_INDICATOR_NUM,

 ID_INDICATOR_SCRL,

     };

18.创建透明背景的步骤

  a.创建一个对话框框架

  b。

在OnInitDialog()函数里添加以下代码

      SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);

 //加入WS_EX_LAYERED扩展属性

 HINSTANCEhInst=LoadLibrary("User32.DLL");

 if(hInst)

 {

  typedefBOOL(WINAPI*MYFUNC)(HWND,COLORREF,BYTE,DWORD);

  MYFUNCfun=NULL;

  fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");

  //取得SetLayeredWindowAttributes函数指针

  if(fun)fun(this->GetSafeHwnd(),0,129,2);

   FreeLibrary(hInst);

 }

19.画直线的步骤

  a.创建一个单文档框架

  b.在视图类.h中添加CPointm_StartPoint;类对象

  c.添加WM_LBUTTONDOWN消息添加如下代码

      m_StartPoint=point;

 SetCapture();

  d.添加WM_LBUTTONUP消息,加如下代码

       if(GetCapture()==this)

 {

  CClientDCdc(this);

  ReleaseCapture();

  dc.MoveTo(m_StartPoint);

  dc.LineTo(point);

 }

      

20。

另一种画直线的步骤

   a.创建一个单文档框架

   b.在视图类.h中添加CPointm_StartPoint,m_LastEndPoint;类对象

   c.添加WM_LBUTTONDOWN消息添加如下代码

      m_StartPoint=point;

       m_LastEndPoint=point;

 SetCapture();

   d.添加WM_LBUTTONUP消息,加如下代码

       if(GetCapture()==this)

 {

  CClientDCdc(this);

  ReleaseCapture();

  dc.MoveTo(m_StartPoint);

  dc.LineTo(point);

 }

   e.添加WM_MOUSEMOVE消息,加入如下代码

 if(nFlags&&MK_LBUTTON)

 {

  CClientDCdc(this);

  intnDrawMode=dc.GetROP2();

  dc.SetROP2(R2_NOTXORPEN);

  dc.MoveTo(m_StartPoint);

  dc.LineTo(m_LastEndPoint);

  dc.MoveTo(m_StartPoint);

  dc.LineTo(point);

  m_LastEndPoint=point;

  dc.SetROP2(nDrawMode);

 }

21.在对话框中显示位图的步骤

  a.创建一个对话框框架

  b.先创建两个位图

  c.在OnPaint()函数下else语句块里添加如下代码

              CPaintDCdc(this);

  CBitmapBackBMP;

  BackBMP.LoadBitmap(IDB_BITMAP1);

  BITMAPbm;

  BackBMP.GetBitmap(&bm);

  CDCImageDC;

  ImageDC.CreateCompatibleDC(&dc);

  CBitmap*pOldImageBMP=ImageDC.SelectObject(&BackBMP);

  dc.StretchBlt(0,0,bm.bmWidth,bm.bmHeight,

   &ImageDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

  ImageDC.SelectObject(pOldImageBMP);

  CBitmapForeBMP;

  ForeBMP.LoadBitmap(IDB_BITMAP2);

  ForeBMP.GetBitmap(&bm);

  pOldImageBMP=ImageDC.SelectObject(&ForeBMP);

  TransparentBlt(dc.GetSafeHdc(),0,0,bm.bmWidth,bm.bmHeight,

   ImageDC.GetSafeHdc(),0,0,bm.bmWidth,bm.bmHeight,RGB(0xff,0xff,0xff));

  ImageDC.SelectObject(pOldImageBM

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1