一、 一次只執行乙個程式例項
下列兩種方式都可以實現,建議採用第二種方式:
1、 if( findwindow(null,"程式標題"))
exit(0);
return false;//例項未執行
} 獲得應用程式主視窗的指標:
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);
五、用指定顏色填充區域
dc.fillsolidrect(rect, ::getsyscolor(color_3dface));
六、繪製立體字型效果的字型,很值得一看
void ctestview::onpaint()
七、簡單的訊息檢索和抽取函式,能夠讓系統響應其它操作
bool peekandpump()
使用classwizard處理wm_char訊息,計算nchar參量並決定所執行的操作,使用者可以確定是否修改、傳送字元。下例說明了如何顯示字母字元,如果字元是字母字元,則呼叫cwnd ; onchar,否則不呼叫onchar.
//only display alphabetic dharacters .
void cmyedit : : onchar (uint nchar , uint nrepcnt , uitn nflags )
如果要修改字元,則不能僅僅簡單地用修改過的nchar呼叫cedit : : onchar。要修改乙個字元,需要首先修改nchar,然後用修改過的nchar呼叫cwnd: : defwindowproc。下例說明了如何將字元轉變為大寫:
//make all characters uppercase
void cmyedit : : onchar (uint nchar , uint nrepcnt , uint nflags )
十、串太長時如何在其末尾顯示乙個省略號
呼叫cdc:: drawtext並指定dt_end_ellipsis標誌,這樣就可以用小略號取代串末尾的字元使其適合於指定的邊界矩形。如果要顯示路徑資訊,指定dt_end_ellipsis標誌並省略號取代串中間的字元。
void csampleview:: ondraw (cdc* pdc)
;其次,在文件類的建構函式中初始化crecttracker 物件:
ctestdoc::ctestdoc()
然後,在檢視類的ondraw函式中畫橢圓和蹤跡矩形:
void ctestview::ondraw(cdc* pdc)
最後,檢視類中處理wm_lbuttondown訊息,並增加下述**。該段**根據滑鼠擊鍵情況可以拖放、移動或者重置橢圓的大小。
void ctestview::onlbuttondown(uint nflags, cpoint point)
else
pdoc->m_tracker.trackrubberband (this,point,true);
cview::onlbuttondown(nflags, point);}十
二、如何在臨時目錄建立乙個臨時檔案
如果你要在臨時目錄下建立臨時檔案,下面的**能幫到你的忙。
bool getuniquetempname (cstring& strtempname)
十三、如何限制視窗的最小範圍
要限制窗體的大小,下面的**能幫到你的忙。
在cmainframe中增加wm_getmaxmininfo訊息的處理函式,然後在這個函式中寫**如下:
//限制主窗體的最小高度和寬度
void cmainframe::ongetminmaxinfo(minmaxinfo far* lpmmi)
十四、怎樣刪除檔案到**站中
要刪除檔案到**站,很簡單。只要用shfileoperation函式就行了,下面的**我將為你演示了這乙個函式的用法。當然你可以直接拷貝到你的專案中。
//刪除檔案到**站中
//pszpath : 待刪除的全路徑檔名
//bdelete : true 刪除,不移到**站,false:移到**站
一、 //返回 : true 刪除成功 false 刪除失敗
bool cdelfiletorecycledlg::recycle(lpctstr pszpath, bool bdelete/*=false*/)
else
return shfileoperation(&shdelfile); // do it!}十
五、記憶體洩漏檢查
也許你已經知道,在c++和c語言中指標問題也就是記憶體申請與釋放是乙個令人頭疼的事情,假如你申請了記憶體,但沒有釋放,並且你的程式需要長時間地執行,那麼,系統的資源將逐漸減少,當系統的資源全部被用完時,系統將會崩潰。所以在開發程式的過程中一定要保證資源的完全釋放。下面我們來介紹記憶體漏洞的檢查。
示例如下:
// 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)
#endif
根據試驗,由於我們無法釋放掉象int cstring char 申請的變數。只能釋放指標型的變數。而檢測記憶體時,照樣會出現記憶體洩漏現象。所以,這種記憶體檢測方式侷限性還是很大。因為我們無法釋放非指標型變數。
VC小技巧15個
vc小技巧15個 一 一次只執行乙個程式例項 二 裝載游標 三 獲得主框架 獲得應用程式主視窗的指標 example afxgetmainwnd showwindow sw showmaxmized 使程式最大化 四 重新建立字型的 if m fontlogo.m hobject m fontlog...
VC小技巧15個
一 一次只執行乙個程式例項二 裝載游標三 獲得主框架 獲得應用程式主視窗的指標 example afxgetmainwnd showwindow sw showmaxmized 使程式最大化 四 重新建立字型的 if m fontlogo.m hobject m fontlogo.detach m ...
VC小技巧15個
一 一次只執行乙個程式例項二 裝載游標三 獲得主框架 獲得應用程式主視窗的指標 example afxgetmainwnd showwindow sw showmaxmized 使程式最大化 四 重新建立字型的 if m fontlogo.m hobject m fontlogo.detach m ...