VC20个常用方法

  • 格式:doc
  • 大小:47.00 KB
  • 文档页数:9

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、打开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);