日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

孫鑫vc視頻教程筆記(二)

 行者120 2014-08-06

1.  當(dāng)在vc++中預(yù)覽一個(gè)窗口,出現(xiàn)無(wú)法關(guān)閉窗口的情況時(shí):使用快捷鍵:Ctrl+PauseBreak

2.  VC中出現(xiàn)類(lèi)丟失的情況,可以刪除aps、ncb、clw這三個(gè)文件,然后打開(kāi)工程,ctrl+w,按提示來(lái)。

3.  CWnd::PreCreateWindow:在窗口沒(méi)有附著在CWnd之前被框架調(diào)用。通過(guò)修改CREATESTRUCT這個(gè)結(jié)構(gòu)體(CREATESTRUCT定義傳遞給窗口過(guò)程的初始化參數(shù)),來(lái)修改窗口類(lèi)和樣式。

4.  在窗口創(chuàng)建之后改變外觀需要在OnCreate中操作。用SetClassLong這個(gè)函數(shù)。

5.  雖然不能修改MFC底層代碼,但是我們可以創(chuàng)建自己的窗口類(lèi),使程序用我們的類(lèi)去創(chuàng)建窗口。WNDCLASS。設(shè)計(jì)完窗口類(lèi)之后應(yīng)該用RegisterClass注冊(cè)之

6.  使用AfxGetInstanceHandle()獲取當(dāng)前應(yīng)用程序的句柄。

7.  修改背景和光標(biāo)應(yīng)該在view類(lèi)中修改

8.  SetWindowLong() 在窗口創(chuàng)建之后修改窗口的屬性,在OnCreate函數(shù)中調(diào)用。

9.  null-terminated string 以空終止“\0”結(jié)尾的字符串

10.              AfxRegisterWndClass() 如果想注冊(cè)自己的窗口類(lèi),調(diào)用這個(gè)函數(shù),返回一個(gè)null-terminated string which contains class name

11.              SetClassLong這個(gè)函數(shù)的能替換窗口類(lèi)的信息,下面是替換圖標(biāo)的例子,在CMainFrame類(lèi)中的OnCreate中最后輸入

SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_WARNING));則圖標(biāo)被替換成最后一個(gè)參數(shù)表示的圖標(biāo)

12.              在CMainFrame中修改光標(biāo)和背景是沒(méi)有意義的,因?yàn)镕rame會(huì)被View遮蓋,所以,要修改光標(biāo)和背景需要在View類(lèi)中修改。但是View類(lèi)沒(méi)有提供OnCreate這個(gè)消息響應(yīng)函數(shù),需要自己添加。 SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_CROSS));//修改光標(biāo)

SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)(HBRUSH)GetStockObject(BLACK_BRUSH));//修改背景

13.              MAKEINTRESOURCE這個(gè)宏將一個(gè)整型值轉(zhuǎn)化為一個(gè)資源

MAKEINTRESOURCE(IDI_ICON1);//這是把資源ID為IDI_ICON1的圖標(biāo)轉(zhuǎn)化為資源的寫(xiě)法

14.              獲得應(yīng)用程序的實(shí)例有三種方法

a)         AfxGetInstanceHandle()

b)         AfxGetApp()->m_hInstance

c)         在MFC架構(gòu)中,有一個(gè)類(lèi)APP類(lèi)已經(jīng)實(shí)例化了一個(gè)變量:C***App  theApp;所以我們?cè)谛枰牡胤缴幌戮托辛?。例如在CMainFrame要使用這個(gè)函數(shù),只需要

extern CModifyApp theApp就行了。然后調(diào)用theApp->m_hInstance;

15.              要獲得一個(gè)介于0-2之間的數(shù),可以這樣

OnTimer()

{

         static int i=0

         i=++i%3;

}

16.              設(shè)置復(fù)選標(biāo)記,可以用UpDateCommandUI 消息相應(yīng),然后用pCmdUI->SetCheck()

17.              CTime獲取系統(tǒng)時(shí)間CTime::GetCurrentTime

18.              設(shè)置狀態(tài)欄信息CStatusBar::SetPaneText

19.              進(jìn)度欄CProgressCtrl

20.              自定義消息使用

a)         消息在windows中用整數(shù)值表示,windows系統(tǒng)消息定義到了WM_USER,自己要定義消息的話(huà),需要在這個(gè)基礎(chǔ)上面加一個(gè)值。#define UM_PROGRESS WM_USER+1

b)         在頭文件中自定義消息:#define UM_PROGESS WM_USER+1,有了消息之后我們需要作消息響應(yīng)函數(shù)的聲明,在頭文件中進(jìn)行afx_msg  void  OnProgress()

c)         消息響應(yīng)函數(shù)聲明之后需要做消息映射。ON_MESSAGE(UM_PROGRESS,OnProgress)

d)         消息映射之后要實(shí)現(xiàn)函數(shù)void CMainFrame::OnProgress(){}

21.              SendMessage和PostMessage的區(qū)別

a)         SendMessage和將代碼直接放置到SendMessage位置的效果一樣

b)         PostMessage是將消息放置到消息隊(duì)列之中,立即返回,這時(shí)候消息等待處理

22.              移動(dòng)窗口:MoveWindow

23.              SetWindowText 設(shè)置窗口文本。這個(gè)可以是一個(gè)狀態(tài)欄

24.              SetMessageText這個(gè)函數(shù)的作用主要是用來(lái)設(shè)置狀態(tài)欄的信息。這個(gè)一般是最左的,最長(zhǎng)的面板。ID為0的。

25.              GetDescendantWindow獲取一個(gè)子孫窗口

26.              AFX_IDW_STATUS_BAR 系統(tǒng)默認(rèn)的狀態(tài)欄的ID

27.              系統(tǒng)給我們定義好了很多標(biāo)準(zhǔn)的控制條的ID號(hào)。只要知道了一個(gè)ID,然后用go to definition就可以找到其它的了。

28.              增加啟動(dòng)畫(huà)面

a)         在project->add to project->component and control->Visual C++ Components,選擇Splashscreen

b)         在OnCreate中修改SetTimer中的時(shí)間。

29.              修改工具欄——給工具欄增加一個(gè)按鈕

a)         工具欄的按鈕和菜單中的選項(xiàng)的功能是一一對(duì)應(yīng)的,所以,他們有著一樣的ID

b)         基于他們擁有同一個(gè)ID,那么我們只需要對(duì)菜單欄上的MenuItem進(jìn)行消息處理,即可使工具欄上面的按鈕擁有同樣的功能

c)         首先在工具欄上新建一個(gè)圖標(biāo)(一個(gè)位圖),然后再在菜單欄新建一個(gè)MenuItem,給MenuItem添加消息相應(yīng),最后將工具欄中新建的圖標(biāo)的ID設(shè)置成和MenuItem一樣即可

d)         修改圖標(biāo)的ID需要在所要修改的圖標(biāo)上面雙擊,這樣就打開(kāi)了它的屬性對(duì)話(huà)框。

e)         想在工具欄上建立一個(gè)分隔符,只需要拖動(dòng)所要插入分割符后面的圖標(biāo)向后移動(dòng)即可

f)          想要?jiǎng)h除一個(gè)工具欄上面的圖標(biāo),只需要將圖標(biāo)拖出工具欄即可。

30.              增加一個(gè)工具欄

a)         新建一個(gè)工具欄資源,然后在上面隨便建幾個(gè)按鈕

b)         到CMainFrame這個(gè)類(lèi)中添加成員變量      CToolBar    m_newToolBar;

c)         找到CMainFrame這個(gè)類(lèi)的OnCreate函數(shù),然后找到添加默認(rèn)的工具欄的代碼,如下

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("Failed to create toolbar\n");

                   return -1;      // fail to create

}

 

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);//使工具欄具有停靠的屬性

EnableDocking(CBRS_ALIGN_ANY);//允許當(dāng)前窗口被工具欄???/P>

         DockControlBar(&m_wndToolBar);//停靠工具欄

然后將復(fù)制,將其中的m_wndToolBar改稱(chēng)我們新定義的m_newToolBar即可

31.              在菜單的MenuItem里面增加一個(gè)控制新建的工具欄,并可以顯示選中的MenuItem

a)         在菜單欄“查看”下面新建一個(gè)項(xiàng)“新工具欄”

b)         用class wizard添加消息響應(yīng)command

c)         編輯代碼

if(!m_newToolBar.IsWindowVisible())

         {

                   m_newToolBar.ShowWindow(SW_SHOWNORMAL);

         }

         else

         {

                   m_newToolBar.ShowWindow(SW_HIDE);

         }

         this->RecalcLayout();//若是不加這一行,結(jié)果回是工具欄上面的圖標(biāo)不見(jiàn)了,但是工具欄還在

                                                        //這個(gè)函數(shù)的功能就是重新計(jì)算窗口的布局

d)         再添加一個(gè)消息相應(yīng)UPDATE_COMMAND_UI,編輯代碼

         pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());

e)         還可以使ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);

這個(gè)方法不需要重新計(jì)算位置,和重新???/P>

32.              修改窗口的大小、程序的標(biāo)題

通過(guò)修改CMainFrame類(lèi)中的CREATESTRUCT結(jié)構(gòu)體來(lái)實(shí)現(xiàn)

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

           return FALSE;

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

//  the CREATESTRUCT cs

cs.cx=300;//新的x,寬度

cs.cy=400;//新的y,高度

//cs.style&=~FWS_ADDTOTITLE;

cs.style=WS_OVERLAPPEDWINDOW;

return TRUE;

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多