VC开发小技巧(1)

追寻我的梦kz

追寻我的梦kz

2016-02-19 12:42

今天图老师小编给大家展示的是VC开发小技巧(1),精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!
一、打开CD-ROM
  
  mciSendString("Set cdAudio door open wait",NULL,0,NULL);
  
  二、关闭CD_ROM
  
  mciSendString("Set cdAudio door closed wait",NULL,0,NULL);
  
  三、关闭计算机
  
  OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构
  
  OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  
  GetVersionEx(&OsVersionInfo); //获取操作系统版本信息
  
  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"); //装入shell32.dll
  
  SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
  
  if(hInst != NULL)
  
  {
  
  //获得函数的地址并调用之
  
  ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
  
  
  
  (*ShutDownDialog)(0);
  
  }
  
  五、枚举所有字体
  
  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,
  
  LPNEWTEXTMETRIC 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是一个列表控件变量
  
  六、一次只运行一个程序实例,假如已运行则退出
  
  if( FindWindow(NULL,"程序标题")) exit(0);
  
  七、得到当前鼠标所在位置
  
  CPoint pt;
  
  GetCursorPos(&pt); //得到位置
  
  八、上下文菜单事件触发事件:OnContextMenu事件
  
  九、显示和隐藏程序菜单
  
  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("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, sizeof(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 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-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-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;
  
  十二、给系统菜单添加一个菜单项给系统菜单添加一个菜单项需要进行下述三个步骤://首先,使用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_MYSYSITEM0xF000);
  
  //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 ("New menu item"));
  
  pSysMenu-AppendMenu(MF_SEPARATOR);
  
  pSysMenu-AppendMenu(MF_STRING, IDM_MYSYSITEM, StrMenuItem);
  
  //…
  
  }
  
  十三、运行其它程序
  
  1、运行EMAIL或网址
  
  char szMailAddress[80];
  
  strcpy(szMailAddress,"mailto:netvc@21cn.com");
  
  ShellExecute(NULL, "open", szMailAddress, NULL, NULL, SW_SHOWNORMAL);
  
  2、运行可执行程序
   WinExec("notepad.exe",SW_SHOW); //运行计事本
  
  十四、动态增加或删除菜单
  
  1、 增加菜单
  
  //添加
  
  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(); //得到主菜单
  
  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=="Always on &Top") //假如是刚才我们增加的菜单项,则删除。
  
  {
  
  (mainmenu-GetSubMenu (0))-DeleteMenu(i,MF_BYPOSITION);
  
  break;
  
  }
  
  }
  
  十五、改变应用程序的图标静态更改:
  
  //修改图标资源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()函数:
  
  SetWindowText( *m_pCWnd,(LPCTSTR)m_WindowText);// m_WindowText可以是一个CString类的变量。
  
  十七、剪切板上通过增强元文件拷贝图像数据下面代码拷贝通过元文件拷贝图像数据到任何应用程序//其可以放置在CView派生类的函数中。
  
  CMeta
展开更多 50%)
分享

猜你喜欢

VC开发小技巧(1)

编程语言 网络编程
VC开发小技巧(1)

vc开发html编程

编程语言 网络编程
vc开发html编程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC学习:IP地址控件小技巧

编程语言 网络编程
VC学习:IP地址控件小技巧

CorelDraw 描图小技巧(1)

CorelDRAW
CorelDraw 描图小技巧(1)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VC中一些控件的小技巧

编程语言 网络编程
VC中一些控件的小技巧

VC小技巧:窗体中显示bmp图象

编程语言 网络编程
VC小技巧:窗体中显示bmp图象

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JAVA上加密算法的实现用例(2)

JAVA上加密算法的实现用例(2)

EditPlus 正则替换图片ubb替换成img

EditPlus 正则替换图片ubb替换成img
下拉加载更多内容 ↓