VC中的常用的20个方法.doc

上传人:hw****26 文档编号:3553199 上传时间:2019-06-04 格式:DOC 页数:9 大小:78KB
下载 相关 举报
VC中的常用的20个方法.doc_第1页
第1页 / 共9页
VC中的常用的20个方法.doc_第2页
第2页 / 共9页
VC中的常用的20个方法.doc_第3页
第3页 / 共9页
VC中的常用的20个方法.doc_第4页
第4页 / 共9页
VC中的常用的20个方法.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、VC中的常用的20个方法一、打开 CD-ROMmciSendString(“Set cdAudio door open wait“,NULL,0,NULL);二、关闭 CD_ROMmciSendString(“Set cdAudio door closed wait“,NULL,0,NULL);三、关闭计算机OSVERSIONINFO OsVersionInfo; /包含操作系统版本信息的数据结构OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);GetVersionEx( /获取操作系统版本信息if(OsVersionInfo.

2、dwPlatformId = VER_PLATFORM_WIN32_WINDOWS)/Windows98,调用 ExitWindowsEx()函数重新启动计算机DWORD dwReserved;ExitWindowsEx(EWX_REBOOT,dwReserved); /可以改变第一个参数,实现注销用户、/关机、关闭电源等操作/ 退出前的一些处理程序四、重启计算机typedef int (CALLBACK *SHUTDOWNDLG)(int); /显示关机对话框函数的指针HINSTANCE hInst = LoadLibrary(“shell32.dll“); /装入 shell32.dllS

3、HUTDOWNDLG ShutDownDialog; /指向 shell32.dll库中显示关机对话框函数的指针if(hInst != NULL)/获得函数的地址并调用之ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);(*ShutDownDialog)(0);五、枚举所有字体LOGFONT lf;lf.lfCharSet = DEFAULT_CHARSET; / Initialize the LOGFONT structurestrcpy(lf.lfFaceName,“);CClientDC dc (this);/ E

4、numerate the font families:EnumFontFamiliesEx(HDC) dc,/枚举函数int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam)/ Create a pointer to the dialog windowCDay7Dlg* pWnd = (CDay7Dlg*) lparam;/ add the font name to the list boxpWnd -m_ctlFontList.AddString(lp

5、elf -elfLogFont.lfFaceName);/ Return 1 to continue font enumerationreturn 1;/其中 m_ctlFontList是一个列表控件变量六、一次只运行一个程序实例,如果已运行则退出if( FindWindow(NULL,“程序标题“) exit(0);七、得到当前鼠标所在位置CPoint pt;GetCursorPos( /得到位置八、上下文菜单事件触发事件OnContextMenu事件九、显示和隐藏程序菜单CWnd *pWnd=AfxGetMainWnd();if(b_m) /隐藏菜单pWnd-SetMenu(NULL);p

6、Wnd-DrawMenuBar();b_m=false;elseCMenu menu;menu.LoadMenu(IDR_MAINFRAME); /显示菜单 也可改变菜单项pWnd-SetMenu(pWnd-DrawMenuBar();b_m=true;menu.Detach();十、获取可执行文件的图标HICON hIcon=:ExtractIcon(AfxGetInstanceHandle(),_T(“NotePad.exe“),0);if (hIcon DestroyIcon(hIcon);十一、窗口自动靠边程序演示BOOL AdjustPos(CRect* lpRect)/自动靠边in

7、t iSX=GetSystemMetrics(SM_CXFULLSCREEN);int iSY=GetSystemMetrics(SM_CYFULLSCREEN);RECT rWorkArea;BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), CRect rcWA;if(!bResult)/如果调用不成功就利用 GetSystemMetrics获取屏幕面积rcWA=CRect(0,0,iSX,iSY);elsercWA=rWorkArea;int iX=lpRect-left;int iY=lpRect-top

8、;if(iX SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);lpRect-OffsetRect(rcWA.left-iX,0);AdjustPos(lpRect);return TRUE;if(iY 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 lpRect-OffsetRect(rcW

9、A.right-lpRect-right,0);AdjustPos(lpRect);return TRUE;if(iY + lpRect-Height() rcWA.bottom - DETASTEP lpRect-OffsetRect(0,rcWA.bottom-lpRect-bottom);return TRUE;return FALSE;/然后在 ONMOVEING事件中使用所下过程调用CRect r=*pRect;AdjustPos(*pRect=(RECT)r;十二、给系统菜单添加一个菜单项给系统菜单添加一个菜单项需要进行下述三个步骤:首先,使用 Resource Symbols对话

10、(在 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_MYSYSITEMAppendMenu(MF_SEPARATOR);pSy

11、sMenu-AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);/十三、运行其它程序1、运行 EMAIL或网址char szMailAddress80;strcpy(szMailAddress,“mailto:“);ShellExecute(NULL, “open“, szMailAddress, NULL, NULL, SW_SHOWNORMAL);2、运行可执行程序WinExec(“notepad.exe“,SW_SHOW); /运行计事本十四、动态增加或删除菜单1、 增加菜单添加CMenu *mainmenu;mainmenu=AfxGet

12、MainWnd()-GetMenu(); /得到主菜单(mainmenu-GetSubMenu (0)-AppendMenu (MF_SEPARATOR);/添加分隔符(mainmenu-GetSubMenu (0)-AppendMenu(MF_STRING,ID_APP_ABOUT,_T(“Always on /添加新的菜单项DrawMenuBar(); /重画菜单2、 删除菜单删除CMenu *mainmenu;mainmenu=AfxGetMainWnd()-GetMenu(); /得到主菜单CString str ;for(int i=(mainmenu-GetSubMenu (0)-

13、GetMenuItemCount()-1;i=0;i-) /取得菜单的项数。(mainmenu-GetSubMenu (0)-GetMenuString(i,str,MF_BYPOSITION);/将指定菜单项的标签拷贝到指定的缓冲区。MF_BYPOSITION 的解释见上。if(str=“Always on break;十五、改变应用程序的图标静态更改:修改图标资源 IDR_MAINFRAME。它有两个图标,一个是16*16的,另一个是32*32的,注意要一起修改。动态更改: 向主窗口发送 WM_SETICON消息.代码如下:HICON hIcon=AfxGetApp()-LoadIcon(

14、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类的变量。十七、剪切板上通过增强元文件拷贝图像数据下面代码拷贝通过元文件拷贝图像数据到任何应用程序,/其可以放置在 CV

15、iew派生类的函数中。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 clipboardOpenClipboard()

16、;EmptyClipboard();:SetClipboardData(CF_ENHMETAFILE,hMF);CloseClipboard();/DeleteMetaFile(hMF);delete m_pMetaDC;十八、剪切板上文本数据的传送把文本放置到剪接板上:CString source;/put your text in sourceif(OpenClipboard()HGLOBAL clipbuffer;char * buffer;EmptyClipboard();clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength(

17、)+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 scopeClos

18、eClipboard();十九、将捕捉屏幕图像到剪切版中void CShowBmpInDlgDlg:OnCutScreen()ShowWindow(SW_HIDE);RECT r_bmp=0,0,:GetSystemMetrics(SM_CXSCREEN),:GetSystemMetrics(SM_CYSCREEN);HBITMAP hBitmap;hBitmap=CopyScreenToBitmap(/hWnd为程序窗口句柄if (OpenClipboard()EmptyClipboard();SetClipboardData(CF_BITMAP, hBitmap);CloseClipboa

19、rd();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;/为屏幕创建设备

20、描述表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 (nXxScrn)n

21、X2 = xScrn;if (nY2yScrn)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)

22、;/得到屏幕位图的句柄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)

23、;/装载资源 MM.bmp 是我的一个文件名,用你的替换hbitmap=(HBITMAP):LoadImage (:AfxGetInstanceHandle(),“MM.bmp“,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);hbmp.Attach(hbitmap);/获取图片格式BITMAP bm;hbmp.GetBitmap(CDC dcMem;dcMem.CreateCompatibleDC(GetDC();CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);CRect lRect;pStaic-GetClientRect(/显示位图pStaic-GetDC()-StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),dcMem.SelectObject(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。