• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Visual C++編程技巧小結

    發表于:2007-04-27來源:作者:點擊數: 標簽:編程技巧小結C++visual如何
    1. 如何獲取應用程序的實例句柄? 應用程序的 實例句柄保存在CWinAppIm_hInstance 中,可以這么調用AfxGetInstancdHandle獲得句柄. Example: HANDLE hInstance=AfxGetInstanceHandle(); 2. 如何通過代碼獲得應用程序主窗口的指針? 主窗口的 指針保存在CWinThre
      1. 如何獲取應用程序的實例句柄?

      應用程序的 實例句柄保存在CWinAppIm_hInstance 中,可以這么調用AfxGetInstancdHandle獲得句柄.

    clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e3e3e3 border=1>
    Example: HANDLE hInstance=AfxGetInstanceHandle();

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

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

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

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

      兩種方法:

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

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

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

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

      4. 如何編程結束應用程序?如何編程控制windows 的重新引導?

      這是個很簡單又是編程中經常要遇到的問題.

      第一問,向窗口發送 WM_CLOSE消息,調用 CWnd::OnClose成員函數.允許對用戶提示是否保存修改過的數據.

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

      還可以創建一個自定義的函數 Terminate Window

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

      說明: FindWindow 函數不是提倡的做法,因為它無法處理標題欄自動改變,比如我們要檢測 Notepad 是不是已運行而事先不知道Notepad 的標題欄,這時 FindWindow 就無能為力了,可以通過枚舉 windows 任務列表的辦法來實現。 在 機械出版社"Windows 95 API開發人員指南"一書有比較詳細的介紹,這里就不再多說樂。

      第二問,Use ExitWindowsEx Function 函數控制系統是重新引導,還是重啟 windows.

      前面已經有人講過樂,就不再提了。

      5. 怎樣加栽其他的應用程序?

      我記得這好象是出場頻度很高的問題。

      三個SDK函數 winexec, shellexecute,createprocess可以使用。

      WinExec 最簡單,兩個參數,前一個指定路徑,后一個指定顯示方式.后一個參數值得說一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一個無最大化按鈕的程序,就是Neterm,calc 等等,就不會出現正常的 窗體,但是已經被加到任務列表里了。

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

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

      CreateProcess最復雜,一共有十個參數,不過大部分都可以用NULL 代替,它可以指定進程的安全屬性,繼承信息,類的優先級等等.來看個很簡單的 Example:

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

    共2頁。 1 2 8 :

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>