欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    VC开发小技巧20个.docx

    • 资源ID:25767109       资源大小:19.29KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VC开发小技巧20个.docx

    1、VC开发小技巧20个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(&OsVersionInfo); /获取操作系统版本信息

    2、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); /装

    3、入shell32.dllSHUTDOWNDLG 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

    4、 (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 windowCDay7Dlg* pWnd = (CDay7Dlg*) lparam;/ ad

    5、d the font name to the list boxpWnd -m_ctlFontList.AddString(lpelf -elfLogFont.lfFaceName);/ Return 1 to continue font enumerationreturn 1;其中m_ctlFontList是一个列表控件变量六、一次只运行一个程序实例,如果已运行则退出if( FindWindow(NULL,程序标题) exit(0);七、得到当前鼠标所在位置CPoint pt;GetCursorPos(&pt); /得到位置八、上下文菜单事件触发事件:OnContextMenu事件九、显示和隐

    6、藏程序菜单CWnd *pWnd=AfxGetMainWnd(); if(b_m)/隐藏菜单pWnd-SetMenu(NULL);pWnd-DrawMenuBar();b_m=false;elseCMenu menu;menu.LoadMenu(IDR_MAINFRAME); /显示菜单 也可改变菜单项pWnd-SetMenu(&menu);pWnd-DrawMenuBar();b_m=true;menu.Detach();十、获取可执行文件的图标HICON hIcon=:ExtractIcon(AfxGetInstanceHandle(),_T(NotePad.exe),0);if (hIco

    7、n &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), &rWorkArea, 0); CRect

    8、rcWA;if(!bResult)/如果调用不成功就利用GetSystemMetrics获取屏幕面积rcWA=CRect(0,0,iSX,iSY);elsercWA=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 SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);

    9、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

    10、-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;十二、给系统菜单添加一个菜单项给系统菜单

    11、添加一个菜单项需要进行下述三个步骤:首先,使用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_MYSY

    12、SITEMAppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);十三、运行其它程序/1、运行EMAIL或网址char szMailAddress80; strcpy(szMailAddress,mailto:netvc);ShellExecute(NULL, open, szMailAddress, NULL, NULL, SW_SHOWNORMAL);/2、运行可执行程序WinExec(notepad.exe,SW_SHOW); /运行计事本十四、动态增加或删除菜单1、 增加菜单

    13、/添加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(); /得到主菜单CStri

    14、ng 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; 十五、改变应用程序的图标静

    15、态更改: 修改图标资源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()函数:SetWind

    16、owText( *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./c

    17、lose meta file dc and prepare for clipboard;HENHMETAFILE hMF = m_pMetaDC-CloseEnhanced();/copy to clipboardOpenClipboard();EmptyClipboard();:SetClipboardData(CF_ENHMETAFILE,hMF);CloseClipboard();/DeleteMetaFile(hMF);delete m_pMetaDC;十八、剪切板上文本数据的传送把文本放置到剪接板上:CString source; /put your text in sourceif

    18、(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;

    19、if(OpenClipboard()buffer = (char*)GetClipboardData(CF_TEXT);/do something with buffer here /before it goes out of scopeCloseClipboard(); 十九、将捕捉屏幕图像到剪切版中void CShowBmpInDlgDlg:OnCutScreen() ShowWindow(SW_HIDE);RECT r_bmp=0,0,:GetSystemMetrics(SM_CXSCREEN),:GetSystemMetrics(SM_CYSCREEN); HBITMAP hBitma

    20、p;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; /

    21、 位图句柄 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 = lpRe

    22、ct-top; nX2 = lpRect-right; nY2 = lpRect-bottom; / 获得屏幕分辨率 xScrn = GetDeviceCaps(hScrDC, HORZRES); yScrn = GetDeviceCaps(hScrDC, VERTRES); /确保选定区域是可见的 if (nX0) nX = 0; if (nYxScrn) nX2 = xScrn; if (nY2yScrn) nY2 = yScrn; nWidth = nX2 - nX; nHeight = nY2 - nY; / 创建一个与屏幕设备描述表兼容的位图 hBitmap = CreateComp

    23、atibleBitmap (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); /

    24、 返回位图句柄 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

    25、,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);lRect.NormalizeRect();/显示位图pStaic-GetDC()-StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);dcMem.SelectObject(&poldBitmap);


    注意事项

    本文(VC开发小技巧20个.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开