云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > VC常用操作源码汇总

VC常用操作源码汇总

  • 62 次阅读
  • 3 次下载
  • 2025/5/25 13:49:54

显示和隐藏程序菜单

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

3

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()) {//调整下

4

//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 &0xFFF0)==IDM_MYSYSITEM) 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 (\pSysMenu->Appendmenu (MF_SEPARATOR)

pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem) … }

现在,选择系统菜单项时用户应进行检测。使用ClassWizard处理WM_SYSCOMMAND消息并检测用户菜单的nID参数:

5

void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam) {

//Determine if our system menu item was selected. if ( (nID & 0xFFF0)==IDM_MYSYSITEM) {

//TODO-process system menu item } else

CMDIFrameWnd ::OnSysCommand (nID, lParam) }

最后,一个设计良好的UI应用程序应当在系统菜单项加亮时在状态条显示一个帮助信息,这可以通过增加一个包含系统菜单基ID的串表的入口来实现。

动态增加或删除菜单

1、 增加菜单 //添加

CMenu *mainmenu;

mainmenu=AfxGetMainWnd()->GetMenu(); //得到主菜单

(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//添加分隔符

(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,_T(\ &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==\如果是刚才我们增加的菜单项,则删除。

6

搜索更多关于: VC常用操作源码汇总 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

显示和隐藏程序菜单 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(\ if (hIcon &&hIcon!=(HICON)-1

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com