分享 總結:VC小知識!

來源:互聯網
上載者:User

(71) 我怎樣才能建立一個等待游標?
  調 用 BeginWaitCursor 函 數 來 啟 動 等 待 光 標,調 用 EndWaitCursor 函 數 來 結 束 等 待 光 標。要 注 意,二 者 都 要 調 用 app 的 成 員 函 數,如 下 所 示:
   AfxGetApp()->BeginWaitCursor();
   // 要做的事
   AfxGetApp()->EndWaitCursor();
  (72) 我在MDI架構中有個 form 視窗。它有個取消按鈕,我需要當使用者按取消按鈕時可關閉form視窗。我應該如何關閉該文檔?
  調 用 OnCloseDocument 函 數。
  (73) 如何訪問桌面視窗
  靜態函數CWnd:: GetDesktopWindow 返回桌面視窗的指標。下例說明了MFC函數CFrameWnd::BeginModalStae是如何使用該函數進入內部視窗列表的。
  void CFrameWnd::BeginModalState ()
  {
  …
  //first count all windows that need to be disabled
  UINT nCount=0
  HWND hWnd= :: GetWindow (:: GetDesktopWindow(), GW_CHILD)
  while (hWnd!=NULL)
  {
  if (:: IsWindowEnabled (hwnd)
  && CWnd::FromHandlePermanent (hWnd)!=NULL
  && AfxIsDescendant (pParent->m_hWnd, hWnd)
  && :: SendMessage (hWnd, WM_DISABLEMODAL, 0, 0)==0)
  {
  ++nCount
  }
  hWnd=:: GetWindow (hWnd, GW_HWNDNEXT)
  }
  …
  (74) 什麼是COLORREF? 我該怎樣用它?
  COLORREF 是 一 個 32-bit 整 型 數 值,它 代 表 了 一 種 顏 色。你 可 以 使 用 RGB 函 數 來 初 始 化 COLORREF。例 如:
   COLORREF color = RGB(0, 255, 0);
  RGB 函 數 接 收 三 個 0-255 數 值,一 個 代 表 紅 色, 一 個 代 表 綠 色, 一 個 代 表 藍 色。在 上 面的 例 子 中, 紅 色 和 藍 色 值 都 為 0,所 以 在 該 顏 色 中 沒 有 紅 色 和 藍 色。綠 色 為 最 大 值 255。所 以 該 顏 色 為 綠 色。0,0,0 為 黑 色,255,255,255 為 白 色。
  另 一 種 初 始 化 COLORREF 的 方 法 如 下 所 示:
   CColorDialog colorDialog;
   COLORREF color;
   if( colorDialog.DoModal() == IDOK )
   {
   color = colorDialog.GetColor();
   }
  這 段 代 碼 使 用 了 MFC 中 的 顏 色 對 話 框,它 需 要 文 件。
  (75) AppWizard所產生的STDAFX檔案是幹什麼用的?
  它 主 要 是 協 助 產 生 預 編 譯 頭 文 件 的。通 常 你 是 不 需 要 修 改 它 的。
  (76) 我在我的程式中是了CDWordArray。我向它添加了約10,000個整數,這使得它變得非常非常慢。為什麼會這麼糟?
  CDWordArray 是 很 好 用 的,只 是 因 為 你 沒 有 指 定 數 組 的最大尺寸。因 此,當 你 添 加 新 元 素 時,該 類 會 從 堆 中 重 新 分 配 空 間。不 幸 的 是,該 類 會 在 每 次 插 入 新 元 素 時 都 為 數 組 重 新 分 配 空 間。如 果 你 向 它 添 加 了 很 多 新 元 素,所 有 這 些 分 配 和 複 制 數 組 的 操 作 會 就 會 使 它 變 慢。解 決 該 問 題 的 方 法 是,你 可 以 使 用 SetSize 函 數 的 第 二 個 參 數 來 改 變 這 種 重 新 分 配 的 頻 率。例 如,如 果 你 把 該 參 數 設 置 為 500,則 每 次 數 組 空 間 超 出 時 它 才 重 新 分 配 並 添 加 500 個 新 空 間,而 不 是 1 個。這 樣 一 來,你 就 可 以 不 用 重 新 分 配 而 添 加 了 另 外 499 個 元 素 空 間,這 也 會 大 大 提 高 程 序 的 運 行 速 度。
  (77) 我該如何改變MDI架構視窗的子視窗的大小以使在視窗以一定的大小開啟?
  在 視 中 的 OnInitialUpdate 函 數 中 調 用 GetParentFrame 函 數。GetParentFrame 會 返 回 一 指 向 一 保 存 有 該 視 的 框 架 窗 口 的 指 針。然 後 調 用 在 框 架 窗 口 上 調 用 MoveWindow。
  (78) 在我的程式的某些部分,我可以調用 MessageBox 函數來建立一個資訊對話方塊,例如在視類中。但是,在其它部分我卻不能,如文檔類中。為什嗎?我怎樣才能在我的應用程式類中建立一個資訊對話方塊?
  MessageBox 函 數 來 自 CWnd 類,所 以 你 只 能 在 從 CWnd 繼 承 的 類 ( 如 CView ) 中 調 用 它。但 是,MFC 也 提 供 了 AfxMessageBox 函 數,你 可 以 在 任 何 地 方 調 用 它。
  (79) 我需要在我的程式中設定全域變數,以使文檔中的所有類都能訪問。我應該吧它放到哪兒?
  把 該 變 量 放 到 該 應 用 程 序 類 的 頭 文 件 中 的 attribute 處。然 後,在 程 序 的 任 何 地 方,你 都 可 以 用 下 面 的 方 法 來 訪 問 該 變 量:
   CMyApp *app = (CMyApp *)AfxGetApp();
   app->MyGlobalVariable = ...
  (80) 我聽說MFC可以發現記憶體漏洞,我怎樣使用該特性?
  如 果 你 在 Debug 菜 單 中 的 Go 選 項 ( 不 是 Project 菜 單 中 的 Execute 選 項 ) 來 運 行 你 的 應 用 程 序,MFC 應 該 在 程 序 終 止 時 報 告 內 存 漏 洞。如 果 沒 有,那 麼 試 試 運 行 MFC Tracer 工 具 程 序 ( 在 VC++ 程 序 組 中 ),並 啟 動 跟 蹤。然 後 返 回 應 用 程 序。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.