第一范文网 - 专业文章范例文档资料分享平台

VC常用操作源码汇总

来源:用户分享 时间:2025/5/28 8:28:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{

(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION); break; }

改变应用程序的图标

静态更改: 修改图标资源IDR_MAINFRAME。它有两个图标,一个是16*16的,另一个是3 2*32的,注意要一起修改。

动态更改: 向主窗口发送WM_SETICON消息.代码如下: HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON); ASSERT(hIcon);

AfxGetMainWnd()->SendMessage(WM_SETICON,TRUE,(LPARAM)hIcon);

改变窗口标题的方法

使用语句 CWnd* m_pCWnd = AfxGetMainWnd( ),然后,再以如下形式调用SetWindowTe xt()函数:

SetWindowText( *m_pCWnd,(LPCTSTR)m_WindowText);// m_WindowText可以是一个CSt ring类的变量。

如果需要经常修改窗口的标题(注:控件也是窗口),应该考虑使用半文档化的函数AfxSetWindowText。该函数在AFXPRIV.H中说明,在WINUTIL.CPP中实现,在联机帮助中找不到它,它在AFXPRIV.H中半文档化, 在以后发行的MFC中将文档化。 AfxSetWindowText的实现如下:

voik AFXAPI AfxSetWindowText (HWND hWndCtrl , LPCTSTR IpszNew ) {

itn nNewLen= Istrlen (Ipaznew) TCHAR szOld [256]

//fast check to see if text really changes (reduces flash in the controls )

if (nNewLen >_contof (szOld)

|| : : GetWindowText (hWndCrtl, szOld , _countof (szOld) !=nNewLen || Istrcmp (szOld , IpszNew)! = 0 {

7

//change it

: : SetWindowText(hWndCtrl , IpszNew ) } }

剪切板上通过增强元文件拷贝图像数据

下面代码拷贝通过元文件拷贝图像数据到任何应用程序,其可以放置在CView派生类的函 数中。

CMetaFileDC * m_pMetaDC = new CMetaFileDC();

m_pMetaDC->CreateEnhanced(GetDC(),NULL,NULL,\ //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));

8

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 代表选定区域

9

{

HDC hScrDC, hMemDC; // 屏幕和内存设备描述表 HBITMAP hBitmap, hOldBitmap; // 位图句柄 int nX, nY, nX2, nY2; // 选定区域坐标 int nWidth, nHeight; // 位图宽度和高度 int xScrn, yScrn; // 屏幕分辨率

// 确保选定区域不为空矩形 if (IsRectEmpty(lpRect)) return NULL;

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

hScrDC = CreateDC(\ //为屏幕设备描述表创建兼容的内存设备描述表 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)

10

搜索更多关于: VC常用操作源码汇总 的文档
VC常用操作源码汇总.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4k0j9350yr1ujtp7zfse_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top