国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

VC開發小技巧(1)

2019-11-17 05:38:15
字體:
來源:轉載
供稿:網友
一、打開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)

{

//Windows98,調用ExitWindowsEx()函數重新啟動計算機

DWord dwReserved;

ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改變第一個參數,實現注銷用戶、

//關機、關閉電源等操作

// 退出前的一些處理程序

}

四、重啟計算機

typedef int (CALLBACK *SHUTDOWNDLG)(int); //顯示關機對話框函數的指針

HINSTANCE hInst = LoadLibrary("shell32.dll"); //裝入shell32.dll

SHUTDOWNDLG ShutDownDialog; //指向shell32.dll庫中顯示關機對話框函數的指針

if(hInst != NULL)

{

//獲得函數的地址并調用之

ShutDownDialog = (SHUTDOWNDLG)GetPRocAddress(hInst,(LPSTR)60);



(*ShutDownDialog)(0);

}

五、枚舉所有字體

LOGFONT lf;

lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT strUCture

strcpy(lf.lfFaceName,"");

CClientDC dc (this);

// Enumerate the font families

::EnumFontFamiliesEx((HDC) dc,&lf, (FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);

//枚舉函數

int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,

LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)



{

// Create a pointer to the dialog window

CDay7Dlg* pWnd = (CDay7Dlg*) lparam;

// add the font name to the list box

pWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);

// Return 1 to continue font enumeration

return 1;

}

//其中m_ctlFontList是一個列表控件變量

六、一次只運行一個程序實例,假如已運行則退出

if( FindWindow(NULL,"程序標題")) exit(0);

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

CPoint pt;

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

八、上下文菜單事件觸發事件:OnContextMenu事件

九、顯示和隱藏程序菜單

CWnd *pWnd=AfxGetMainWnd();

if(b_m) //隱藏菜單

{

pWnd->SetMenu(NULL);

pWnd->DrawMenuBar();

b_m=false;

}

else

{

CMenu menu;

menu.LoadMenu(IDR_MAINFRAME); ////顯示菜單 也可改變菜單項

pWnd->SetMenu(&menu);

pWnd->DrawMenuBar();

b_m=true;

menu.Detach();

}

十、獲取可執行文件的圖標

HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0);

if (hIcon &&hIcon!=(HICON)-1)

{

pDC->DrawIcon(10,10,hIcon);



}

DestroyIcon(hIcon);



十一、窗口自動靠邊程序演示

BOOL AdjustPos(CRect* lpRect)

{//自動靠邊

int iSX=GetSystemMetrics(SM_CXFULLSCREEN);

int iSY=GetSystemMetrics(SM_CYFULLSCREEN);

RECT rWorkArea;

BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkAre

a, 0);

CRect rcWA;

if(!bResult)

{//假如調用不成功就利用GetSystemMetrics獲取屏幕面積

rcWA=CRect(0,0,iSX,iSY);

}

else

rcWA=rWorkArea;

int iX=lpRect->left;

int iY=lpRect->top;



if(iX < rcWA.left + DETASTEP && iX!=rcWA.left)

{//調整左

//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);

lpRect->OffsetRect(rcWA.left-iX,0);

AdjustPos(lpRect);

return TRUE;

}

if(iY < rcWA.top + DETASTEP && iY!=rcWA.top)

{//調整上

//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);

lpRect->OffsetRect(0,rcWA.top-iY);

AdjustPos(lpRect);

return TRUE;

}

if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->Width())

{//調整右

//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);

lpRect->OffsetRect(rcWA.right-lpRect->right,0);

AdjustPos(lpRect);

return TRUE;

}

if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect

->Height())

{//調整下

//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);

lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);

return TRUE;

}

return FALSE;

}

//然后在ONMOVEING事件中使用所下過程調用

CRect r=*pRect;

AdjustPos(&r);

*pRect=(RECT)r;

十二、給系統菜單添加一個菜單項給系統菜單添加一個菜單項需要進行下述三個步驟://首先,使用Resource Symbols對話(在View菜單中選擇Resource Symbols...可以顯

//示該對話)定義菜單項ID,該ID應大于0x0F而小于0xF000;

//其次,調用CWnd::GetSystemMenu獲取系統菜單的指針并調用CWnd:: Appendmenu將菜單

//項添加到菜單中。下例給系統菜單添加兩個新的int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct)

{

//…

//Make sure system menu item is in the right range.

ASSERT(IDM_MYSYSITEM<0xF000);

//Get pointer to system menu.

CMenu* pSysMenu=GetSystemMenu(FALSE);

ASSERT_VALID(pSysMenu);

//Add a separator and our menu item to system menu.

CString StrMenuItem(_T ("New menu item"));

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);

//…

}

十三、運行其它程序

1、運行EMAIL或網址

char szMailAddress[80];

strcpy(szMailAddress,"mailto:netvc@21cn.com");

ShellExecute(NULL, "open", szMailAddress, NULL, NULL, SW_SHOWNORMAL);

2、運行可執行程序
WinExec("notepad.exe",SW_SHOW); //運行計事本

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

1、 增加菜單

//添加

CMenu *mainmenu;

mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜單

(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//添加分隔符

(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,

_T("Always on &Top")); //添加新的菜單項

DrawMenuBar(); //重畫菜單

2、 刪除菜單

//刪除

CMenu *mainmenu;

mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜單

CString str ;

for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //取得菜單的項數。

{

(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION);

//將指定菜單項的標簽拷貝到指定的緩沖區。MF_BYPOSITION的解釋見上。

if(str=="Always on &Top") //假如是剛才我們增加的菜單項,則刪除。

{

(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION);

break;

}

}

十五、改變應用程序的圖標靜態更改:

//修改圖標資源IDR_MAINFRAME。它有兩個圖標,一個是16*16的,另一個是32*32的,注重要一起修改。

//動態更改: 向主窗口發送WM_SETICON消息.代碼如下:

HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON);

ASSERT(hIcon);

AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);


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

//使用語句 CWnd* m_pCWnd = AfxGetMainWnd( ),然后,再以如下形式調用SetWindowText()函數:

SetWindowText( *m_pCWnd,(LPCTSTR)m_WindowText);// m_WindowText可以是一個CString類的變量。

十七、剪切板上通過增強元文件拷貝圖像數據下面代碼拷貝通過元文件拷貝圖像數據到任何應用程序//其可以放置在CView派生類的函數中。

CMeta

上一篇:VC vs CBuilder

下一篇:C++設計目標和原則

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永康市| 常德市| 澳门| 江源县| 清徐县| 淮安市| 千阳县| 桃江县| 宽甸| 信丰县| 穆棱市| 焉耆| 三江| 青海省| 称多县| 利津县| 天台县| 吉水县| 临桂县| 彭水| 岚皋县| 东莞市| 军事| 泰安市| 静乐县| 华坪县| 常宁市| 巴彦县| 鲁甸县| 浦江县| 临沭县| 临泉县| 玉门市| 安图县| 辰溪县| 张掖市| 黄大仙区| 琼结县| 泰安市| 泾阳县| 张家港市|