VC开发小技巧

  一、打开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_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 ("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

时间: 2024-10-01 03:10:35

VC开发小技巧的相关文章

你值得拥有的Android Studio开发小技巧_Android

上一次发过了一个介绍Studio的,这里再发一个补充下. 我们都知道,Android Studio的功能是非常强大的,也是很智能的.如果有人告诉你学Android开发要用命令行,你可以告诉他Android Studio是谷歌提供给开发者提升效率的.试想想你脑袋里有一堆想法,但是开发编码效率太低导致想法都丢失了或者兴趣消失了多可怕对不.好了废话不多说,这里介绍几个比较好用的技巧和快捷键,提升我们的编码效率. 1.完成一句代码 如果我们调用了一个方法,并给方法传递了参数,这个时候如果我们要结束这个语

Silverlight 游戏开发小技巧:传送点特效制作

前面我们使用投影(Projection)完成了一个升级的特效,Silverlight故事板动画相当的容易,这次我们将详细说说故事板动画的帧制作,完成一个循环的传送点特效,大家都知道,在游戏中,传送点一般是固定在某一个地方,循环播放,它通常表明这里会有一个事件之类的特殊地点,我们将用前面的升级特效稍微改造,就可以得到了: 这个系列只是有关于游戏开发的小技巧,相比纯粹的技术文章要简单一些,我个人感觉可能更加偏向于Blend美工方面的工作,能够为各位Silverlight开发者带来一些新的思路,就是一

一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单

网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单,在桌面游戏还停留在四态按钮的时候,网页应用都已经入动感时代了,这次,使用Silverlight实现一个小菜单,体验一下动感吧 当鼠标移入的时候,目标的图标就会放大,形成一个阶梯的效果,要实现这个效果,将需要使用自定义控件和StackPanel的知识. 现在在一个Silverlight工程中添加新控件

一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单2

动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好,非常感谢各位,而今天这篇的动感小菜单2,让按钮更加动感"柔"顺:)期望能做的更好吧. 我们可以直接借助昨天的工程,在上面的基础上修改,打开昨天的工程(Silverlight 游戏开发小技巧:动感小菜单): 直接选定一个StackPanel的Group,然后按住Alt键复制一个,为了方便编程,这次我们将它制作成一个控件: 在结构里面直接选择刚

Sil“.NET研究”verlight 游戏开发小技巧:动感小菜单2

动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好,非常感谢各位,而今天这篇的动感小菜单2,让按钮更加动感"柔"顺:)期望能做的更好吧. 我们可以直接借助昨天的工程,在上面的基础上修改,打开昨天的工程(Silverlight 游戏开发小技巧:动感小菜单): 直接选定一个StackPanel的Group,然后按住Alt键复制一个,为了方便编程,这次我们将它制作成一个控件: 在结构里面直接选择刚

一起谈.NET技术,Silverlight 游戏开发小技巧:传送点特效制作

前面我们使用投影(Projection)完成了一个升级的特效,Silverlight故事板动画相当的容易,这次我们将详细说说故事板动画的帧制作,完成一个循环的传送点特效,大家都知道,在游戏中,传送点一般是固定在某一个地方,循环播放,它通常表明这里会有一个事件之类的特殊地点,我们将用前面的升级特效稍微改造,就可以得到了: 这个系列只是有关于游戏开发的小技巧,相比纯粹的技术文章要简单一些,我个人感觉可能更加偏向于Blend美工方面的工作,能够为各位Silverlight开发者带来一些新的思路,就是一

Silverli“.NET研究”ght 游戏开发小技巧:传送点特效制作

前面我们使用投影(Projection)完成了一个升级的特效,Silverlight故事板动画相当的容易,这次我们将详细说说故事板动画的帧制作,完成一个循环的传送点特效,大家都知道,在游戏中,传送点一般是固定在某一个地方,循环播放,它通常表明这里会有一个事件之类的特殊地点,我们将用前面的升级特效稍微改造,就可以得到了: 这个系列只是有关于游戏开发的小技巧,相比纯粹的技术文章要简单一些,我个人感觉可能更加偏向于Blend美工方面的工作,能够为各位Silverlight开发者带来一些新的思路,就是一

一起谈.NET技术,Silverlight 游戏开发小技巧:传说中的透视跑马灯

昨夜元宵佳节,各种灯会热闹非凡,伴随烟火灿烂好不热闹,可惜一点也没看着T_T,那就写一个跑马灯吧,可是跑马灯并不稀奇,各位高手们已经写过而且都各有特点,所以,写也要写点有特色的才好,游戏中经常能看到一种带有透视的选人界面,上次写的是一个固定效果,那么这次带上点动画,结合一个Silverlight的MVC开发小技巧快速完成它. 仍然继续偷懒,借用之前的控件:Silverlight 游戏开发:简单的技能条系统 把Card控件拿出来,然后做一下简单的修改,然后打开XAML文件,填入如下的代码: 这是给

Silve“.NET研究”rlight 游戏开发小技巧:传说中的透视跑马灯

昨夜元宵佳节,各种灯会热闹非凡,伴随烟火灿烂好不热闹,可惜一点也没看着T_T,那就写一个跑马灯吧,可是跑马灯并不稀奇,各位高手们已经写过而且都各有特点,所以,写也要写点有特色的才好,游戏中经常能看到一种带有透视的选人界面,上次写的是一个固定效果,那么这次带上点动画,结合一个Silverlight的MVC开发小技巧快速完成它. 仍然继续偷懒,借用之前的控件:Silverlight 游戏开发:简单的技能条系统 上海徐汇企业网站设计与制作p> 把Card控件拿出来,然后做一下简单的修改,然后打开XAM