人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

Visual C++編程技巧小結(jié)

Visual C++編程技巧小結(jié)

更新時(shí)間:2022-07-09 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

1. 如何獲取應(yīng)用程序的實(shí)例句柄?

  應(yīng)用程序的 實(shí)例句柄保存在CWinAppIm_hInstance 中,可以這么調(diào)用AfxGetInstancdHandle獲得句柄.

  Example: HANDLE hInstance=AfxGetInstanceHandle();

  2. 如何通過代碼獲得應(yīng)用程序主窗口的指針?

  主窗口的 指針保存在CWinThread::m_pMainWnd中,調(diào)用 AfxGetMainWnd實(shí)現(xiàn)。

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

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

  兩種方法:

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

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

  Example(1): 在程序窗口左上角顯示 NotePad圖標(biāo).

  void CSampleView: OnDraw(CDC * pDC)
  {
  if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.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 的路徑正規(guī)上來說用GetWindowsDirectory 函數(shù)得到,如果是調(diào)用 win95下的畫筆,應(yīng)該用訪問注冊(cè)表的方法獲得其路徑,要作成一個(gè)比較考究的程序,考慮應(yīng)該全面點(diǎn).

  4. 如何編程結(jié)束應(yīng)用程序?如何編程控制windows 的重新引導(dǎo)?

  這是個(gè)很簡(jiǎn)單又是編程中經(jīng)常要遇到的問題.

  第一問,向窗口發(fā)送 WM_CLOSE消息,調(diào)用 CWnd::OnClose成員函數(shù).允許對(duì)用戶提示是否保存修改過的數(shù)據(jù).

  Example: AfxGetMainWindow()->SendMessage(WM_CLOSE);

  還可以創(chuàng)建一個(gè)自定義的函數(shù) Terminate Window

  void Terminate Window(LPCSTR pCaption)
  {
  CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption);
  if (pWnd)
  pWnd ->SendMessage(WM_CLOSE);
  }

  說明: FindWindow 函數(shù)不是提倡的做法,因?yàn)樗鼰o法處理標(biāo)題欄自動(dòng)改變,比如我們要檢測(cè) Notepad 是不是已運(yùn)行而事先不知道Notepad 的標(biāo)題欄,這時(shí) FindWindow 就無能為力了,可以通過枚舉 windows 任務(wù)列表的辦法來實(shí)現(xiàn)。 在 機(jī)械出版社"Windows 95 API開發(fā)人員指南"一書有比較詳細(xì)的介紹,這里就不再多說樂。

  第二問,Use ExitWindowsEx Function 函數(shù)控制系統(tǒng)是重新引導(dǎo),還是重啟 windows.

  前面已經(jīng)有人講過樂,就不再提了。

  5. 怎樣加栽其他的應(yīng)用程序?

  我記得這好象是出場(chǎng)頻度很高的問題。

  三個(gè)SDK函數(shù) winexec, shellexecute,createprocess可以使用。

  WinExec 最簡(jiǎn)單,兩個(gè)參數(shù),前一個(gè)指定路徑,后一個(gè)指定顯示方式.后一個(gè)參數(shù)值得說一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一個(gè)無最大化按鈕的程序,就是Neterm,calc 等等,就不會(huì)出現(xiàn)正常的 窗體,但是已經(jīng)被加到任務(wù)列表里了。

  ShellExecute較 WinExex靈活一點(diǎn),可以指定工作目錄,下面的 Example就是直接打開c:\temp\1.txt,而不用加栽與 txt 文件關(guān)聯(lián)的應(yīng)用程序,很多安裝程序完成后都會(huì)打開一個(gè)窗口,來顯示Readme or Faq,偶猜就是這么作的啦。

  ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZED);

  CreateProcess最復(fù)雜,一共有十個(gè)參數(shù),不過大部分都可以用NULL 代替,它可以指定進(jìn)程的安全屬性,繼承信息,類的優(yōu)先級(jí)等等.來看個(gè)很簡(jiǎn)單的 Example:

  STARTUPINFO stinfo; //啟動(dòng)窗口的信息
  PROCESSINFO procinfo; //進(jìn)程的信息
  CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_
  CLASS,NULL,NULL, &stinfo,&procinfo);

  6. 確定應(yīng)用程序的 路徑

  前些天好象有人問過這個(gè)問題.

  Use GetModuleFileName 獲得應(yīng)用程序的路徑,然后去掉可執(zhí)行文件名。

  Example:

  TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中定義了吧,好象是128
  GetModuleFileName(NULL,exeFullPath,MAX_PATH)

  7. 獲得各種目錄信息

  Windows目錄: Use "GetWindowsDirectory“

  Windows下的system目錄: Use "GetSystemDirectory"

  temp目錄: Use "GetTempPath "

  當(dāng)前目錄: Use "GetCurrentDirectory"

  請(qǐng)注意前兩個(gè)函數(shù)的第一個(gè)參數(shù)為 目錄變量名,后一個(gè)為緩沖區(qū); 后兩個(gè)相反.

[1] [2]  下一頁(yè)

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 申扎县| 义乌市| 晋中市| 乌鲁木齐县| 武功县| 通州市| 凌云县| 乌拉特中旗| 濉溪县| 女性| 天水市| 盈江县| 浦东新区| 治多县| 垫江县| 浏阳市| 乌审旗| 台东市| 米泉市| 通化市| 望都县| 楚雄市| 陈巴尔虎旗| 乌审旗| 宜春市| 五家渠市| 根河市| 大石桥市| 宜春市| 北海市| 从化市| 阳新县| 讷河市| 徐水县| 吉木乃县| 沧州市| 枞阳县| 石家庄市| 乐陵市| 铁岭市| 株洲市|