首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC 應用程式開發常見問題解答集

     編輯:VC 教學

Q1:啟動外部程式有哪些方法?該選哪個?

三個 SDK 函式:

  • WinExec:最簡單,兩參數 (路徑、顯示方式)。但若以 SW_SHOWMAXIMIZED 啟動無最大化按鈕程式 (如計算機),視窗不正常顯示,僅在工作列出現。
  • ShellExecute:較靈活,可指定工作目錄、動作 (open/print 等)。
  • CreateProcess:最複雜 (10 參數),多數可傳 NULL,但能控制安全屬性、繼承、優先權等細節。

原則:靈活性與簡單性成反比,視需求選擇。

Q2:父視圖定義 WM_LBUTTONDOWN 處理器,子視圖卻不觸發?

檢查子視圖類別的 BEGIN_MESSAGE_MAP 基底類別參數是否正確 (ClassWizard 易生成錯誤基底類別)。若手寫訊息映射,確認類別名、父類別名、參數無誤,const 修飾詞錯誤也會導致映射失效。

Q3:如何自動取得應用程式所在目錄?

GetModuleFileName(NULL, buffer, MAX_PATH) 取得完整執行檔路徑,字串操作移除檔名即為目錄。常用目錄 API:

  • Windows 目錄:GetWindowsDirectory
  • System 目錄:GetSystemDirectory
  • Temp 目錄:GetTempPath
  • 目前目錄:GetCurrentDirectory

Q4:如何讀寫系統參數 (按鍵重複速率、滑鼠雙擊延遲、桌面壁紙等)?

關鍵 API:SystemParametersInfo。第一參數 uiAction 決定操作類別,如 SPI_GETICONTITLELOGFONT (圖示標題字型)、SPI_SETDESKWALLPAPER (桌面壁紙)。
若僅需螢幕解析度,直接用 GetSystemMetrics (SM_CXSCREEN, SM_CYSCREEN)。

Q5:如何讓應用程式提前結束?

核心思路:向主視窗發送 WM_CLOSE。取得主視窗句柄用 AfxGetMainWnd(),呼叫 PostMessage(WM_CLOSE) 或 SendMessage(WM_CLOSE),框架會自動呼叫 OnClose 提示存檔。
避免 用 FindWindow 找標題,因標題常動態變更導致失效。
若需阻止使用者關機時強制結束,在主框架類別處理 WM_QUERYENDSESSION 並回傳 FALSE。

Q6:MFC 記憶體洩漏偵測如何啟用?

必須用 Debug 功能表的 Go (F5) 執行,而非 Project → Execute。程式結束時輸出視窗會報告洩漏。若無輸出,嘗試執行 VC++ 程式群組中的 MFCTracer 工具啟用追蹤後再執行程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved