青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Impossible is nothing  
  愛過知情重醉過知酒濃   花開花謝終是空   緣份不停留像春風來又走   女人如花花似夢
公告
日歷
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
統(tǒng)計
  • 隨筆 - 8
  • 文章 - 91
  • 評論 - 16
  • 引用 - 0

導航

常用鏈接

留言簿(4)

隨筆分類(4)

隨筆檔案(8)

文章分類(77)

文章檔案(91)

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

一、 一次只運行一個程序?qū)嵗?/STRONG>
下列兩種方式都可以實現(xiàn),建議采用第二種方式:
1、 if( FindWindow(NULL,"程序標題"))
         exit(0);
2、BOOL CDemoTBarEApp::InstanceIsRun()
{
 HANDLE m_hMutex;
 m_hMutex = ::CreateMutex(NULL, TRUE, _T("YourApplication"));
 ASSERT(m_hMutex);
 if (GetLastError() == ERROR_ALREADY_EXISTS)
 {
  m_hMutex = NULL;
  return TRUE;//實例已經(jīng)運行
 }
 return FALSE;//實例未運行
}

二、 裝載光標
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
  其中::SetCursor()是全局函數(shù),用來設置整個例程的光標參數(shù)是宏定義光標句柄。AfxGetApp ()是一個系統(tǒng)函數(shù),它返回當前的一個CWinApp對象。其成員函數(shù)LoadStandardCursor()用來讀取一個系統(tǒng)指針,每一種系統(tǒng)指針的具體宏定義如下:
IDC_APPSTARTING  帶小沙漏的標準箭頭
IDC_ARROW  標準箭頭
IDC_CROSS  十字光標(用于定位)
IDC_HAND  Windows 2000:手型
IDC_HELP  帶問號的箭頭
IDC_IBEAM  I型標
IDC_ICON  Obsolete for applications marked version 4.0 or later.
IDC_NO   禁止符號
IDC_SIZE  Obsolete for applications marked version 4.0 or later. Use IDC_SIZEALL.
IDC_SIZEALL  十字箭頭
IDC_SIZENESW  指向東北和西南的雙向箭頭
IDC_SIZENS  指向南和北的雙向箭頭
IDC_SIZENWSE  指向西北和東南的雙向箭頭
IDC_SIZEWE  指向東西的雙向箭頭
IDC_UPARROW  上箭頭
IDC_WAIT  沙漏

三、獲得主框架: 
CMainFrame * pMainframe = (CMainFrame *) AfxGetApp()->m_pMainWnd;
.獲取應用程序的實例句柄:
      Example: HANDLE hInstance=AfxGetInstanceHandle();

獲得應用程序主窗口的指針:
      Example: AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED); //使程序最大化

四、重新建立字體的代碼
 if(m_fontLogo.m_hObject)
  m_fontLogo.Detach();

 m_fontLogo.CreateFont(nHeight, 0, 0, 0, nWeight, bItalic, bUnderline,0,0,0,0,0,0, Name);

五、用指定顏色填充區(qū)域
 dc.FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));

六、繪制立體字體效果的字體,很值得一看
void CTestView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 CRect rect;
 GetWindowRect(rect);

 CFont  m_fontLogo;
 m_fontLogo.CreateFont(24, 0, 0, 0, FW_BOLD, true,
  FALSE,0,0,0,0,0,0, "Arial");
 CString m_LogoText;
 m_LogoText=_T("Benlux Pro3D System");
 dc.SetBkMode(TRANSPARENT);

 CFont * OldFont = dc.SelectObject(&m_fontLogo);

 // draw text in DC
 COLORREF OldColor = dc.SetTextColor( ::GetSysColor( COLOR_3DHILIGHT));

 rect.right = rect.Width();
 rect.bottom = rect.Height();
 rect.left = rect.top = 0;
 dc.FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE));


 dc.DrawText( m_LogoText, rect + CPoint(1,1), DT_SINGLELINE | DT_LEFT | DT_VCENTER);
 dc.SetTextColor( ::GetSysColor( COLOR_3DSHADOW));
 dc.DrawText( m_LogoText, rect, DT_SINGLELINE | DT_LEFT | DT_VCENTER);

 // restore old text color
 dc.SetTextColor( OldColor);
 // restore old font
 dc.SelectObject(OldFont); 
 // Do not call CView::OnPaint() for painting messages
}

七、簡單的消息檢索和抽取函數(shù),能夠讓系統(tǒng)響應其它操作
BOOL PeekAndPump()
{
 static MSG msg;

 while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) {
  if (!AfxGetApp()->PumpMessage()) {
   ::PostQuitMessage(0);
   return FALSE;
  } 
 }
 return TRUE;
}

八、在你的程序中用動畫光標替換默認的等待光標 (ANI光標的使用)
 HCURSOR m_hAniCursor=NULL;
 BeginWaitCursor();   //begin wait cursor for api function
 
 //load ani cursor from file in current path
 TCHAR cursorPath[MAX_PATH]; GetModuleFileName(NULL,cursorPath,MAX_PATH);
 char drive[_MAX_DRIVE];
 char dir[_MAX_DIR];
 char fname[_MAX_FNAME];
 char ext[_MAX_EXT];
 _splitpath(cursorPath, drive, dir, fname, ext );
 sprintf(cursorPath,"%s%swait.ani",drive,dir);  //ani cursor file name is wait.ani
 
 m_hAniCursor= LoadCursorFromFile(cursorPath);
 HCURSOR oldCursor;
 if(m_hAniCursor != NULL)
  oldCursor=SetCursor(m_hAniCursor);
 
 for(long i=0;i<1000;i++) 
  Sleep(5);
 
 oldCursor=NULL;
 m_hAniCursor=NULL;
 EndWaitCursor();  //end wait cursor for api function

九、如何限制編輯框中的準許字符
     如果用戶在編輯控件中只允許接收數(shù)字,可以使用一個標準的編輯控件并指
定新的創(chuàng)建標志ES_NUMBERS,它是Windows 95新增加的標志,該標志限制 編輯控
件只按收數(shù)字字符。
如果用戶需要復雜的編輯控件,可以使用Microsoft 的屏蔽編輯控件,它是一個很有用的OLE定制控件。
    如果希望不使用OLE 定制控件自己處理字符,可以派生一個CEdit 類并處理WM_CHAR消息,然后從編輯控件中過濾出特定的字符。首先,使用ClassWizard 建立一個 CEdit的派生類,其次,在對話類中指定一個成員變量將編輯控件分類在OnInitdialog 中調(diào)用CWnd: : SubclassDlgItem .

//In your dialog class declaration (.H file )
private :
    CMyEdit m_wndEdit ; // Instance of your new edit control .

//In you dialog class implementation (.CPP file )
BOOL CSampleDialog : : OnInitDialog ( )
{

    //Subclass the edit lontrod .
    m_wndEdit .SubclassDlgItem  (IDC_EDIT,this );
    …
}
    使用ClassWizard處理WM_CHAR消息,計算nChar參量并決定所執(zhí)行的操作,用戶可以確定是否修改、傳送字符。下例說明了如何顯示字母字符,如果字符是字母字符,則調(diào)用CWnd ; OnChar,否則不調(diào)用OnChar.
//Only display alphabetic dharacters .
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UITN nFlags )
{
    //Determine if nChar is an alphabetic character .
    if (: : IsCharAlpha  ( ( TCHAR) nChar ) )
        CEdit : : OnChar (nChar, nRepCnt , nFlags );
}
    如果要修改字符,則不能僅僅簡單地用修改過的nChar調(diào)用CEdit : : OnChar。要修改一個字符,需要首先修改nChar,然后用修改過的nChar調(diào)用CWnd: : DefWindowProc。下例說明了如何將字符轉(zhuǎn)變?yōu)榇髮懀?BR>//Make all characters uppercase
void CMyEdit : : OnChar (UINT nChar , UINT nRepCnt , UINT nFlags )
{
    //Make sure character is uppercase .
    if (: : IsCharAlpha  ( .( TCHAR) nChar)
         nChar=: : CharUpper (nChar ) ;
    //Bypass default OnChar processing and directly call  default window proc.
    DefWindProc (WM_CHAR, nChar , MAKELPARAM (nRepCnt , nFlags )) ;
}

十、串太長時如何在其末尾顯示一個省略號
    調(diào)用CDC:: DrawText并指定DT_END_ELLIPSIS標志,這樣就可以用小略號取代串末尾的字符使其適合于指定的邊界矩形。如果要顯示路徑信息,指定DT_END_ELLIPSIS標志并省略號取代串中間的字符。
void CSampleView:: OnDraw (CDC* pDC)
{
     CTestDoc* pDoc=GetDocument ();
     ASSERT_VALID (pDoc);
                                                                                   
     //Add ellpsis to end of string if it does not fit
     pDC->Drawtext (CString ("This is a long string"),
         CRect (10, 10, 80, 30), DT_LEFT | DT_END_ELLIPSIS);

     //Add ellpsis to middle of string if it does not fit
     pDC->DrawText (AfxgetApp () ->m_pszhelpfilePath,
         CRect (10, 40, 200, 60), DT_LEFT | DT_PATH_ELLIPSIS);
}

十一、如何實現(xiàn)一個橡皮區(qū)矩形(具有蹤跡矩形并可移動、縮放的矩形)
     CRectTracker是一個很有用的類,可以通過調(diào)用CRectTracker:: TrackRubberBand響應WM_LBUTTONDOWN消息來創(chuàng)建一個橡皮區(qū)矩形。下例表明使用CRectTracker移動和重置視窗中的藍色橢圓的大小是很容易的事情。
    首先,在文檔類中聲明一個CRectTracker數(shù)據(jù)成員:
class CTestDoc: Public CDocument
{…
public:
 CRectTracker m_tracker;

};
     其次,在文檔類的構(gòu)造函數(shù)中初始化CRectTracker 對象:
CTestDoc::CTestDoc()
{
 m_tracker.m_rect.SetRect (10, 10, 300, 300);
 m_tracker.m_nStyle=CRectTracker:: resizeInside  |
  CRectTracker:: dottedLine; 
}
     然后,在視圖類的OnDraw函數(shù)中畫橢圓和蹤跡矩形:
void CTestView::OnDraw(CDC* pDC)
{
 CTestDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);

//Select blue brush into device context.
     CBrush brush (RGB (0, 0, 255));
     CBrush* pOldBrush=pDC->SelectObject (&brush);

     //draw ellipse in tracking rectangle.
     CRect rcEllipse;
     pDoc->m_tracker.GetTrueRect (rcEllipse);
     pDC->Ellipse (rcEllipse);

     //Draw tracking rectangle.
     pDoc->m_tracker.Draw (pDC);
     //Select blue brush out of device context.
     pDC->SelectObject(pOldBrush);
}
    最后,視圖類中處理WM_LBUTTONDOWN消息,并增加下述代碼。該段代碼根據(jù)鼠標擊鍵情況可以拖放、移動或者重置橢圓的大小。

void CTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
   //Get pointer to document.
     CTestDoc* pDoc=GetDocument();
     ASSERT_VALID (pDoc);

     //If clicked on ellipse, drag or resize it. Otherwise create a
     //rubber-band rectangle nd create a new ellipse.
     BOOL bResult=pDoc->m_tracker.HitTest (point)!=
         CRectTracker::hitNothing;

     //Tracker rectangle changed so update views.
     if (bResult)
     {
        pDoc->m_tracker.Track (this,point,TRUE);
        pDoc->SetModifiedFlag ();
        pDoc->UpdateAllViews (NULL);
     }
     else
        pDoc->m_tracker.TrackRubberBand (this,point,TRUE);

 CView::OnLButtonDown(nFlags, point);
}

十二、如何在臨時目錄創(chuàng)建一個臨時文件
如果你要在臨時目錄下創(chuàng)建臨時文件,下面的代碼能幫到你的忙。
bool GetuniqueTempName (CString& strTempName)
{
  strTempName="";
     //Get the temporary files directory.
     TCHAR szTempPath [MAX_PATH];
     DWORD dwResult=:: GetTempPath (MAX_PATH, szTempPath);
     if (dwResult==0)
   return false;

     //Create a unique temporary file.
     TCHAR szTempFile[MAX_PATH];
     UINT nResult=GetTempFileName (szTempPath, _T ("~ex"),0,szTempFile);
     if (dwResult==0)
   return false;

     strTempName=szTempFile;
  return true;
}

十三、如何限制窗口的最小范圍
要限制窗體的大小,下面的代碼能幫到你的忙。
在CMainFrame中增加WM_GETMAXMININFO消息的處理函數(shù),然后在這個函數(shù)中寫代碼如下:
//限制主窗體的最小高度和寬度
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
 lpMMI->ptMinTrackSize.x=600;
 lpMMI->ptMinTrackSize.y=400;
 CNewFrameWnd::OnGetMinMaxInfo(lpMMI);
}

十四、怎樣刪除文件到回收站中
 要刪除文件到回收站,很簡單。只要用SHFileOperation函數(shù)就行了,下面的代碼我將為你演示了這一個函數(shù)的用法。當然你可以直接拷貝到你的項目中。
//刪除文件到回收站中
//pszPath  : 待刪除的全路徑文件名
//bDelete  : TRUE 刪除,不移到回收站,F(xiàn)ALSE:移到回收站
一、 //返回    : TRUE 刪除成功     FALSE 刪除失敗
BOOL CDelFileToRecycleDlg::Recycle(LPCTSTR pszPath, BOOL bDelete/*=FALSE*/)
{
 SHFILEOPSTRUCT  shDelFile;
 memset(&shDelFile,0,sizeof(SHFILEOPSTRUCT));
 shDelFile.fFlags |= FOF_SILENT;      // don"t report progress
 shDelFile.fFlags |= FOF_NOERRORUI;     // don"t report errors
 shDelFile.fFlags |= FOF_NOCONFIRMATION;    // don"t confirm delete
 // Copy pathname to double-NULL-terminated string.
 //
 TCHAR buf[_MAX_PATH + 1]; // allow one more character
 _tcscpy(buf, pszPath);   // copy caller"s pathname
 buf[_tcslen(buf)+1]=0;   // need two NULLs at end

 // Set SHFILEOPSTRUCT params for delete operation
 shDelFile.wFunc = FO_DELETE;       // REQUIRED: delete operation
 shDelFile.pFrom = buf;         // REQUIRED: which file(s)
 shDelFile.pTo = NULL;          // MUST be NULL
 if (bDelete)
 {         // if delete requested..
  shDelFile.fFlags &= ~FOF_ALLOWUNDO;    // ..don"t use Recycle Bin
 }
 else
 {           // otherwise..
  shDelFile.fFlags |= FOF_ALLOWUNDO;    // ..send to Recycle Bin
 }
     return SHFileOperation(&shDelFile);    // do it!
}

十五、內(nèi)存泄漏檢查
    也許你已經(jīng)知道,在C++和C語言中指針問題也就是內(nèi)存申請與釋放是一個令人頭疼的事情,假如你申請了內(nèi)存,但沒有釋放,并且你的程序需要長時間地運行,那么,系統(tǒng)的資源將逐漸減少,當系統(tǒng)的資源全部被用完時,系統(tǒng)將會崩潰。所以在開發(fā)程序的過程中一定要保證資源的完全釋放。下面我們來介紹內(nèi)存漏洞的檢查。
示例如下:
// do your memory allocations and deallocations...
 CString s = "This is a frame variable";
#ifdef _DEBUG
 CMemoryState oldMemState, newMemState, diffMemState;
 oldMemState.Checkpoint();
#endif
 // the next object is a heap object
 CString* p = new CString( "Smith  Alan  581_0215" );
 delete p;
 p=NULL;
#ifdef _DEBUG
 newMemState.Checkpoint();
 BOOL b=diffMemState.Difference(oldMemState, newMemState);
 if (b)
 {
  AfxMessageBox( "Memory leaked! " );
 }
#endif
    根據(jù)試驗,由于我們無法釋放掉象int CString char 申請的變量。只能釋放指針型的變量。而檢測內(nèi)存時,照樣會出現(xiàn)內(nèi)存泄漏現(xiàn)象。所以,這種內(nèi)存檢測方式局限性還是很大。因為我們無法釋放非指針型變量。

posted on 2006-02-24 13:26 笑笑生 閱讀(328) 評論(0)  編輯 收藏 引用 所屬分類: 編譯器

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
Copyright © 笑笑生 Powered by: 博客園 模板提供:滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美福利在线| 国产精品久久久久婷婷| 免费成人在线观看视频| 雨宫琴音一区二区在线| 久久人人超碰| 亚洲第一精品夜夜躁人人爽| 亚洲清纯自拍| 欧美视频在线一区| 午夜精品福利电影| 免费在线观看精品| 夜夜精品视频一区二区| 国产乱子伦一区二区三区国色天香| 性欧美长视频| 亚洲高清色综合| 午夜视频在线观看一区| 在线观看视频免费一区二区三区| 欧美久久99| 欧美一二三区精品| 亚洲国产老妈| 欧美一区午夜精品| 91久久夜色精品国产九色| 欧美小视频在线| 久久久久久久久久久久久久一区| 久久精品人人做人人综合| 国产精品人成在线观看免费| 欧美中文在线视频| 亚洲第一黄网| 性欧美大战久久久久久久久| 亚洲成人原创| 国产精品久久99| 麻豆精品91| 午夜视频一区二区| 亚洲精品视频在线观看免费| 久久久久久一区二区| 一区二区三区欧美| 国内精品嫩模av私拍在线观看| 欧美日韩国产一区| 久久综合九色99| 亚洲欧美制服中文字幕| 亚洲人体影院| 麻豆freexxxx性91精品| 亚洲主播在线观看| 亚洲精品系列| 在线观看欧美日韩| 国产亚洲一级高清| 欧美日韩亚洲一区二区三区在线观看| 一本久久青青| 亚洲国产高潮在线观看| 久久久国产精品一区| 亚洲字幕一区二区| 亚洲蜜桃精久久久久久久 | 欧美在线精品一区| 亚洲网站在线观看| 亚洲人成在线免费观看| 欧美+亚洲+精品+三区| 欧美一区二区性| 亚洲一区免费在线观看| 日韩图片一区| 亚洲青涩在线| 最新国产の精品合集bt伙计| 国产一区深夜福利| 国产欧美日韩不卡| 国产精品久久久久久影视| 欧美日韩一区不卡| 欧美伦理在线观看| 欧美高清视频在线观看| 欧美成人午夜影院| 欧美国产成人精品| 欧美国产另类| av成人黄色| 亚洲国产精品电影| 欧美不卡视频| 免费成年人欧美视频| 久久亚洲综合网| 久久夜色撩人精品| 久久夜色精品国产亚洲aⅴ| 久久久久一区二区三区四区| 久久久99国产精品免费| 欧美亚洲色图校园春色| 性做久久久久久免费观看欧美| 亚洲欧洲99久久| 欧美在线黄色| 久久亚洲精选| 欧美高清影院| 亚洲人成人77777线观看| 亚洲精品一级| 亚洲无毛电影| 欧美综合二区| 欧美 日韩 国产一区二区在线视频| 美女日韩在线中文字幕| 欧美精品在线观看一区二区| 欧美色大人视频| 国产精品一区二区三区四区| 国产亚洲成精品久久| 亚洲精品国产精品乱码不99| 国产午夜精品福利| 精品成人在线观看| 亚洲精品美女久久7777777| 99精品视频一区二区三区| 亚洲一区二区三区影院| 欧美在线观看网址综合| 老牛影视一区二区三区| 亚洲经典三级| 亚洲欧美一区二区原创| 久久久久久穴| 欧美日韩性生活视频| 国产日韩精品在线播放| 亚洲国产99| 亚洲一二三区视频在线观看| 久久精品99久久香蕉国产色戒| 欧美成人一区在线| 一区二区av| 久热精品视频在线观看| 欧美日韩久久精品| 狠狠色丁香婷综合久久| 日韩写真在线| 久久综合给合久久狠狠狠97色69| 亚洲国产另类 国产精品国产免费| 亚洲一区二区三区精品动漫| 久久久青草婷婷精品综合日韩 | 国产一本一道久久香蕉| 国产日韩欧美麻豆| 亚洲激情偷拍| 久久国产视频网| 亚洲精品影视| 久久一区二区三区四区五区| 国产精品久久久久久久7电影| 亚洲第一狼人社区| 久久国产精品99国产精| 亚洲精品资源美女情侣酒店| 欧美在线网站| 国产精品久久久对白| 亚洲国产专区校园欧美| 久久av最新网址| 日韩视频免费| 欧美成人免费全部观看天天性色| 国产日本欧洲亚洲| 亚洲女性裸体视频| 亚洲激情网站免费观看| 久久成人国产| 国产精品久久久久久久久动漫| 亚洲精品免费在线观看| 久久偷窥视频| 欧美一区二区视频网站| 国产精品日韩久久久| 一区二区三区国产精华| aa级大片欧美三级| 亚洲欧美日韩国产中文| 欧美日韩国产综合视频在线观看中文 | 国产精品久久久久久久久久ktv| 亚洲日产国产精品| 免费在线亚洲欧美| 久久久久久久久久久久久女国产乱 | 国产欧美视频一区二区三区| 亚洲淫片在线视频| 亚洲欧洲精品一区二区三区| 美女黄色成人网| 亚洲第一区在线观看| 久久久精品动漫| 欧美一区二区三区的| 国产欧美亚洲日本| 欧美在线精品免播放器视频| 亚洲在线视频免费观看| 欧美性片在线观看| 一区二区三区视频在线观看| 日韩亚洲欧美成人| 欧美视频亚洲视频| 亚洲资源av| 亚洲天堂av在线免费| 国产精品电影在线观看| 午夜国产精品影院在线观看 | 亚洲欧美国产高清va在线播| 国产精品美女久久久| 欧美一区二区播放| 亚洲欧美日韩精品综合在线观看| 欧美日精品一区视频| 午夜一区二区三区在线观看| 亚洲欧美不卡| 影音先锋一区| 欧美国产一区二区在线观看 | 久久久91精品| 亚洲美女视频网| 国产精品久久波多野结衣| 久久成人这里只有精品| 亚洲欧美一级二级三级| 国产一区二区三区黄| 欧美成人午夜77777| 欧美另类高清视频在线| 午夜精品国产精品大乳美女| 欧美在线电影| 日韩午夜在线播放| 亚洲欧美日本另类| 亚洲大片精品永久免费| 亚洲日本乱码在线观看| 国产精品一区二区欧美| 久久综合婷婷| 欧美日韩视频专区在线播放 | 亚洲在线视频一区| 狠狠做深爱婷婷久久综合一区 | 亚洲精品视频啊美女在线直播|