VC程式設計技巧整理

2021-04-02 10:56:07 字數 4504 閱讀 4768

一、開啟cd-rom

mcisendstring("set cdaudio door open wait",null,0,null);

二、關閉cd_rom

mcisendstring("set cdaudio door closed wait",null,0,null);

三、關閉計算機

osversioninfo osversioninfo; //包含作業系統版本資訊的資料結構

osversioninfo.dwosversioninfosize = sizeof(osversioninfo);

getversionex(&osversioninfo); //獲取作業系統版本資訊

if(osversioninfo.dwplatformid == ver_platform_win32_windows)

四、重啟計算機

typedef int (callback *shutdowndlg)(int); //顯示關機對話方塊函式的指標

hinstance hinst = loadlibrary("shell32.dll"); //裝入shell32.dll

shutdowndlg shutdowndialog; //指向shell32.dll庫中顯示關機對話方塊函式的指標

if(hinst != null)

五、列舉所有字型

logfont lf;

lf.lfcharset = default_charset; // initialize the logfont structure

strcpy(lf.lffacename,"");

cclientdc dc (this);

//enumerate the font families

::enumfontfamilie***((hdc) dc,&lf,

(fontenumproc) enumfontfamproc,(lparam) this,0);

//列舉函式

int callback enumfontfamproc(lpenumlogfont lpelf,lpnewtextmetric lpntm,dword nfonttype,long lparam)

其中m_ctlfontlist是乙個列表控制項變數

六、一次只執行乙個程式例項,如果已執行則退出

if( findwindow(null,"程式標題")) exit(0);

七、得到當前滑鼠所在位置

cpoint pt;

getcursorpos(&pt); //得到位置

八、上下文選單事件觸發事件:oncontextmenu事件

九、顯示和隱藏程式選單

cwnd *pwnd=afxgetmainwnd();

if(b_m) //隱藏選單

else

十、獲取可執行檔案的圖示

hicon hicon=::extracticon(afxgetinstancehandle(),_t("notepad.exe"),0);

if (hicon &&hicon!=(hicon)-1)

destroyicon(hicon);

十一、視窗自動靠邊程式演示

bool adjustpos(crect* lprect)

else

rcwa=rworkarea;

int ix=lprect->left;

int iy=lprect->top;

if(ix < rcwa.left + detastep && ix!=rcwa.left)

if(iy < rcwa.top + detastep && iy!=rcwa.top)

if(ix + lprect->width() > rcwa.right - detastep && ix !=rcwa.right-lprect->width())

if(iy + lprect->height() > rcwa.bottom - detastep && iy !=rcwa.bottom-lprect->height())

return false;

} //然後在onmoveing事件中使用所下過程呼叫

crect r=*prect;

adjustpos(&r);

*prect=(rect)r;

十二、給系統選單新增乙個選單項

給系統選單新增乙個選單項需要進行下述三個步驟:

首先,使用resource symbols對話(在view選單中選擇resource symbols...可以顯示該對話)定義選單項id,該id應大於

0x0f而小於0xf000;

兩個新的選單項。

int cmainframe:: oncreate (lpcreatestruct lpcreatestruct) 十

三、執行其它程式

//1、執行email或**

char szmailaddress[80];

strcpy(szmailaddress,"mailto:[email protected]");

shellexecute(null, "open", szmailaddress, null, null, sw_shownormal);

//2、執行可執行程式

winexec("notepad.exe",sw_show); //執行計事本

十四、動態增加或刪除選單

1、 增加選單

//新增

cmenu *mainmenu;

mainmenu=afxgetmainwnd()->getmenu(); //得到主選單

drawmenubar(); //重畫選單

2、 刪除選單

//刪除

cmenu *mainmenu;

mainmenu=afxgetmainwnd()->getmenu(); //得到主選單

cstring str ;

for(int i=(mainmenu->getsubmenu (0))->getmenuitemcount()-1;i>=0;i--) //取得選單的項數。 }

十五、改變應用程式的圖示 缺 十

六、另一種改變視窗標題的方法

使用語句 cwnd* m_pcwnd = afxgetmainwnd( ),然後,再以如下形式呼叫setwindowtext()函式:

setwindowtext( *m_pcwnd,(lpctstr)m_windowtext);// m_windowtext可以是乙個cstring類的變數。

十七、剪下板上通過增強元檔案拷貝影象資料

下面**拷貝通過元檔案拷貝影象資料到任何應用程式,其可以放置在cview派生類的函式中。

cmetafiledc * m_pmetadc = new cmetafiledc();

m_pmetadc->createenhanced(getdc(),null,null,"whatever");

//draw meta file

//do what ever you want to do: bitmaps, lines, text...

//close meta file dc and prepare for clipboard;

henhmetafile hmf = m_pmetadc->closeenhanced();

//copy to clipboard

openclipboard();

emptyclipboard();

::setclipboarddata(cf_enhmetafile,hmf);

closeclipboard();

//deletemetafile(hmf);

delete m_pmetadc;

十八、剪下板上文字資料的傳送

把文字放置到剪接板上:

cstring source;

//put your text in source

if(openclipboard())

從剪接板上獲取文字:

char * buffer;

if(openclipboard())

closeclipboard();

十九、將捕捉螢幕影象到剪下版中

void cshowbmpindlgdlg::oncutscreen()

; hbitmap hbitmap = copyscreentobitmap(&r_bmp);

//hwnd為程式視窗控制代碼

if (openclipboard())

showwindow(sw_show);

} hbitmap cshowbmpindlgdlg::copyscreentobitmap(lprect lprect)//lprect 代表選定區域 二

十、如何將位圖縮放顯示在static控制項中

//在staic控制項內顯示位圖

void cshowbmpindlgdlg::showbmpinstaic()

VC程式設計技巧

1.得到程式路徑 tchar exefullpath max path getmodulefilename null,exefullpath,max path 2.從對話方塊得到乙個資料夾 char szdir max path browseinfo bi itemidlist pidl bi.hw...

VC程式設計技巧

1.得到程式路徑 tchar exefullpath max path getmodulefilename null,exefullpath,max path 2.從對話方塊得到乙個資料夾 char szdir max path browseinfo bi itemidlist pidl bi.hw...

VC程式設計小技巧

用vc新建dialog.新增rich edit 後編譯可以通過,執行後自動退出,原因即是沒有初始化的後果。解決方法 解釋 wasatarup 是應用程式呼叫的windows sockets dll的第乙個函式,在呼叫任何winsock api之前,必須呼叫wsastartup 進行初始化,最後呼叫w...