小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 行者120 2014-08-06

1.  當在vc++中預覽一個窗口,出現(xiàn)無法關(guān)閉窗口的情況時:使用快捷鍵:Ctrl+PauseBreak

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

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

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

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

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

7.  修改背景和光標應(yīng)該在view類中修改

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

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

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

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

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

12.              在CMainFrame中修改光標和背景是沒有意義的,因為Frame會被View遮蓋,所以,要修改光標和背景需要在View類中修改。但是View類沒有提供OnCreate這個消息響應(yīng)函數(shù),需要自己添加。 SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_CROSS));//修改光標

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

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

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

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

a)         AfxGetInstanceHandle()

b)         AfxGetApp()->m_hInstance

c)         在MFC架構(gòu)中,有一個類APP類已經(jīng)實例化了一個變量:C***App  theApp;所以我們在需要的地方生命一下就行了。例如在CMainFrame要使用這個函數(shù),只需要

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

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

OnTimer()

{

         static int i=0

         i=++i%3;

}

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

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

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

19.              進度欄CProgressCtrl

20.              自定義消息使用

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

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

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

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

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

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

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

22.              移動窗口:MoveWindow

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

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

25.              GetDescendantWindow獲取一個子孫窗口

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

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

28.              增加啟動畫面

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

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

29.              修改工具欄——給工具欄增加一個按鈕

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

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

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

d)         修改圖標的ID需要在所要修改的圖標上面雙擊,這樣就打開了它的屬性對話框。

e)         想在工具欄上建立一個分隔符,只需要拖動所要插入分割符后面的圖標向后移動即可

f)          想要刪除一個工具欄上面的圖標,只需要將圖標拖出工具欄即可。

30.              增加一個工具欄

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

b)         到CMainFrame這個類中添加成員變量      CToolBar    m_newToolBar;

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

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);//使工具欄具有??康膶傩?/P>

EnableDocking(CBRS_ALIGN_ANY);//允許當前窗口被工具欄停靠

         DockControlBar(&m_wndToolBar);//??抗ぞ邫?/P>

然后將復制,將其中的m_wndToolBar改稱我們新定義的m_newToolBar即可

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

a)         在菜單欄“查看”下面新建一個項“新工具欄”

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é)果回是工具欄上面的圖標不見了,但是工具欄還在

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

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

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

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

這個方法不需要重新計算位置,和重新???/P>

32.              修改窗口的大小、程序的標題

通過修改CMainFrame類中的CREATESTRUCT結(jié)構(gòu)體來實現(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;

}

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多