《VC常用操作源码总结》由会员分享,可在线阅读,更多相关《VC常用操作源码总结(47页珍藏版)》请在金锄头文库上搜索。
1、目录CD-ROM1关闭计算机1重启计算机1枚举所有字体1只运行一个程序实例2得到鼠标位置2显示和隐藏程序菜单2获取可执行文件的图标3窗口自动靠边程序演示3系统菜单添加菜单项5动态增加或删除菜单6改变应用程序的图标7改变窗口标题的方法7剪切板上通过增强元文件拷贝图像数据8剪切板上文本数据的传送8捕捉屏幕图像到剪切板中9将位图缩放显示11改变对话框中控件的颜色12修改窗口外观14获得应用程序主窗口的指针14确定应用程序的路径14获得其他程序的图标15获得各种目录信息15如何自定义消息16改变窗口的缺省风格16将窗口居中显示16一启动就最大化和最小化17限制窗口的大小17创建一个字回绕的CEditV
2、iew17程序保持极小状态18移动窗口18重置窗口的大小18单击窗口标题栏以外区域使窗口移动18改变视窗的背景颜色19防止主框窗口在其说明中显示活动的文档名20获取有关窗口正在处理的当前消息的信息20代码中获取工具条和状态条的指针21使能和禁止工具条的工具提示21如何创建一个不规则形状的窗口21获取应用程序的实例句柄24如何编程结束应用程序24创建和使用无模式对话框24怎样加载其他的应用程序25使窗口始终在最前方26在对话框中显示一个位图27获取一个对话控件的指针27改变控件的字体27OLE控件中使用OLE_COLOR数据类型28在不使用通用文件打开对话的情况下如何显示一个文件列表28旋转按钮
3、控件29用位图显示下压按钮29创建三态下压按钮30如何动态创建控件30限制编辑框中的准许字符30向列表框中添加多个项时防止闪烁31向编辑控件中添加文本32访问预定义的GDI对象32获取GDI对象的属性信息33实现一个橡皮区矩形34更新翻转背景颜色的文本35创建一个具有特定点大小的字体36如何计算一个串的大小36显示旋转文本37显示包含标签字符的串38串太长时如何在其末尾显示一个省略号39为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态39在用户环境中如何确定系统显示元素的颜色40查询和设置系统参数40确定当前屏幕分辨率40使用预定义Windows光标41检索原先的Tas
4、k Manager应用程序使用的任务列表41确定Windows和Windows系统目录42在哪儿创建临文件42我怎样才能建立一个等待光标43访问桌面窗口43怎样用COLORREF44在应用程序中循环浏览已经打开的文档、视图44MFC在窗口标题栏45CD-ROM 打开:mciSendString(Set cdAudio door open wait,NULL,0,NULL); 关闭:mciSendString(Set cdAudio door closed wait,NULL,0,NULL); 关闭计算机 OSVERSIONINFO OsVersionInfo; /包含操作系统版本信息的数据结构
5、 OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&OsVersionInfo); /获取操作系统版本信息 if(OsVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS) /Windows98,调用ExitWindowsEx()函数重新启动计算机 DWORD dwReserved; ExitWindowsEx(EWX_REBOOT,dwReserved); /可以改变第一个参数,实现注销用户、 /关机、关闭电源等操作 / 退出前的一些处理程序
6、重启计算机 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); 枚举所有字体
7、 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, LPNEWTE
8、XTMETRIC 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是一个列表控件变量只运行一个程序实
9、例 if( FindWindow(NULL,程序标题) exit(0);或CreateMutx:HANDLE m_hMutex = :CreateMutex(NULL,true,_T(MBD); if(GetLastError() = ERROR_ALREADY_EXISTS) ReleaseMutex(m_hMutex); :MessageBox(NULL,_T(应用程序已经运行!),_T(系统提示),MB_OK|MB_ICONSTOP); return FALSE; 也可以用CreateThread,方法同CreateMutex得到鼠标位置 CPoint pt; GetCursorPos(
10、&pt); /得到位置 显示和隐藏程序菜单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(),_
11、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, siz
12、eof(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 SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE); lpRect-OffsetRect(rcWA.left-iX,0); AdjustPos(lpRect); return TRUE; if(iY S
13、etWindowPos(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; retu