程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC實用小知識總結 (一)

VC實用小知識總結 (一)

編輯:vc教程
 (1) 如何通過代碼獲得應用程序主窗口的 指針?

  主窗口的 指針保存在CWinThread::m_pMainWnd中,調用AfxGetMainWnd實現。

   AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)
  //使程序最大化.

  (2) 確定應用程序的路徑 

   Use GetModuleFileName 獲得應用程序的路徑,然後去掉可執行文件名。
  Example:
  TCHAR
  exeFullPath[MAX_PATH] // MAX_PATH在API中定義了吧,好象是
  128
  GetModuleFileName(NULL,exeFullPath,MAX_PATH)

  (3) 如何在程序中獲得其他程序的 圖標?

  兩種方法:

  (1) SDK函數 SHGetFileInfo 或使用 ExtractIcon獲得圖標資源的 handle,

  (2) SDK函數 SHGetFileInfo 獲得有關文件的很多信息,如大小圖標,屬性, 類型等.

  Example(1):

  在程序窗口左上角顯示 NotePad圖標.

   void CSampleVIEw:
  OnDraw(CDC * pDC)
  {
  if( :: SHGetFileInfo(_T("c:pwin95 otepad.exe"),0,
  &stFileInfo,sizeof(stFileInfo),SHGFI_ICON))
  {
  pDC ->DrawIcon(10,10,stFileInfo.hIcon)
  }
  }
  Example(2):同樣功能,Use ExtractIcon Function
  void CSampleVIEw:: OnDraw(CDC *pDC)
  {
  HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T
  ("NotePad.exe"),0)
  if (hIcon &&hIcon!=(HICON)-1)
  pDC->DrawIcon(10,10,hIcon)
  } 

  說明: 獲得notepad.exe的路徑正規上來說用GetWindowsDirectory函數得到, 如果是調用 win95下的畫筆,應該用訪問注冊表的方法獲得其路徑,要作成一個比較考究的程序,考慮應該全面點.

  (4) 獲得各種目錄信息

  Windows目錄: Use "GetWindowsDirectory"
  Windows下的system目錄: Use "GetSystemDirectory"
  temp目錄: Use "GetTempPath"
  當前目錄: Use "GetCurrentDirectory"

  請注意前兩個函數的第一個參數為目錄變量名,後一個為緩沖區後兩個相反.

  (5) 如何自定義消息

  1) 手工定義消息,可以這麼寫

   #define WM_MY_MESSAGE(WM_USER+100), 

  MS 推薦的至少是 WM_USER+100

  (2)寫消息處理函數,用

   WPARAM,LPARAM返回LRESULT.
  LRESULT CMainFrame::OnMyMessage(WPARAM wparam,LPARAM lParam)

  {
  temp目錄: Use "GetTempPath"
  //加入你的處理函數 irectory"
  }

  (6) 如何改變窗口的圖標?

  向窗口發送 WM_SECTION消息。

   Example:
  HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON)
  ASSERT(hIcon)
  AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon) 

  (7) 如何改變窗口的缺省風格?

  重載 CWnd:: PreCreateWindow 並修改CREATESTRUCT結構來指定窗口風格和其他創建信息.

   Example: Delete "Max" Button and Set Original
  Window's Position and Size

  BOOL CMainFrame:: PreCreateWindow
  (CREATESTRUCT &cs)
  {
  cs.style &=~WS_MAXINIZEMOX

  cs.x=cs.y=0
  cs.cx=GetSystemMetrics(SM_CXSCREEN/2)
  cs.cy=GetSystemMetrics(SM_CYSCREEN/2)

  return CMDIFramewnd ::PreCr

[1] [2] [3] [4] [5] [6] 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved