VC常用方法

一、打开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->W idth())

{

//调整右 //

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派生类的函数中。

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())

{

HGLOBAL clipbuffer;

char * buffer;

EmptyClipboard();

clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);

buffer = (char*)GlobalLock(clipbuffer);

strcpy(buffer, LPCSTR(source));

GlobalUnlock(clipbuffer);

SetClipboardData(CF_TEXT,clipbuffer);

CloseClipboard();

}

从剪接板上获取文本:

char * buffer;

if(OpenClipboard())

{

buffer = (char*)GetClipboardData(CF_TEXT);

//do something with buffer here

//before it goes out of scope

}

CloseClipboard();

十九、将捕捉屏幕图像到剪切版中

void CShowBmpInDlgDlg::OnCutScreen()

{

ShowWindow(SW_HIDE);

RECT r_bmp={0,0,::GetSystemMetrics(SM_CXSCREEN), ::GetSystemMetrics(SM_CYSCREEN)};

HBITMAP hBitmap;

hBitmap=CopyScreenToBitmap(&r_bmp); //hWnd为程序窗口句柄

if (OpenClipboard())

{

EmptyClipboard();

SetClipboardData(CF_BITMAP, hBitmap);

CloseClipboard();

}

ShowWindow(SW_SHOW);

}

HBITMAP CShowBmpInDlgDlg::CopyScreenToBitmap(LPRECT lpRect)

{

//lpRect 代表选定区域

{

HDC hScrDC, hMemDC; // 屏幕和内存设备描述表

HBITMAP hBitmap, hOldBitmap; // 位图句柄

int nX, nY, nX2, nY2; // 选定区域坐标

int nWidth, nHeight; // 位图宽度和高度

int xScrn, yScrn; // 屏幕分辨率

// 确保选定区域不为空矩形

if (IsRectEmpty(lpRect))

return NULL;

//为屏幕创建设备描述表

hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);

//为屏幕设备描述表创建兼容的内存设备描述表

hMemDC = CreateCompatibleDC(hScrDC);

// 获得选定区域坐标

nX = lpRect->left;

nY = lpRect->top;

nX2 = lpRect->right;

nY2 = lpRect->bottom;

// 获得屏幕分辨率

xScrn = GetDeviceCaps(hScrDC, HORZRES);

yScrn = GetDeviceCaps(hScrDC, VERTRES);

//确保选定区域是可见的

if (nX<0)

nX = 0;

if (nY<0)

nY = 0;

if (nX2>xScrn)

nX2 = xScrn;

if (nY2>yScrn)

nY2 = yScrn;

nWidth = nX2 - nX;

nHeight = nY2 - nY;

// 创建一个与屏幕设备描述表兼容的位图

hBitmap = CreateCompatibleBitmap (hScrDC, nWidth, nHeight);

// 把新位图选到内存设备描述表中

hOldBitmap =(HBITMAP)SelectObject(hMemDC, hBitmap);

// 把屏幕设备描述表拷贝到内存设备描述表中

BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY);

//得到屏幕位图的句柄

hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);

//清除

DeleteDC(hScrDC);

DeleteDC(hMemDC);

// 返回位图句柄

return hBitmap;

}

}

二十、如何将位图缩放显示在Static控件中   

//在Staic控件内显示位图

void CShowBmpInDlgDlg::ShowBmpInStaic()

{

CBitmap hbmp;

 HBITMAP hbitmap;

//将pStatic指向要显示的地方

CStatic *pStaic; pStaic=(CStatic*)GetDlgItem(IDC_IMAGE);

//装载资源 MM.bmp是我的一个文件名,用你的替换

hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),"MM.bmp", IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);

hbmp.Attach(hbitmap);

//获取图片格式

BITMAP bm;

hbmp.GetBitmap(&bm);

CDC dcMem;

dcMem.CreateCompatibleDC(GetDC());

CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);

CRect lRect;

pStaic->GetClientRect(&lRect);

//显示位图

pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Heigh t(), &dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

dcMem.SelectObject(&poldBitmap);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值