⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vc常用源码.htm

📁 Hex转换成CString
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      volumestep;//步长<BR>//加入消息映射函数<BR>ON_MESSAGE(MM_MIXM_CONTROL_CHANGE, 
      OnMixerCtrlChange)<BR>//当系统音量改变时调用此函数<BR>LONG OnMixerCtrlChange(UINT 
      wParam, LONG lParam)<BR>{<BR>//响应控件音量改变的消息,然后获得当前音量并设置滚动条 <BR>if 
      ((HMIXER)wParam == m_hMixer &amp;&amp; (DWORD)lParam == 
      m_dwVolumeControlID)<BR>{<BR>amdGetMasterVolumeValue(nowvolume);<BR>multiple=nowvolume;<BR>double 
      percent;<BR>}<BR>if ((HMIXER)wParam == m_hMixer &amp;&amp; (DWORD)lParam 
      == 
      m_dwMuteControlID)<BR>{<BR>amdGetMasterMuteValue(muteornot);<BR>}<BR>return 
      0L;<BR>}<BR>//在Init函数中加入<BR>if 
      (amdInitialize())<BR>{<BR>//获得音量控制控件的ID和名称<BR>amdGetMasterVolumeControl();<BR>// 
      获得当前音量值,并设置滚动条的初始位置<BR>amdGetMasterVolumeValue(nowvolume);<BR>amdGetMasterMuteValue(muteornot);<BR>multiple=nowvolume;<BR>difference=(long)(m_dwMaximum-m_dwMinimum);<BR>}<BR>//函数<BR>BOOL 
      amdInitialize()//初始化<BR>{<BR>//获取当前混合设备数量 <BR>m_nNumMixers = 
      ::mixerGetNumDevs();<BR>m_hMixer = NULL;<BR>::ZeroMemory(&amp;m_mxcaps, 
      sizeof(MIXERCAPS));<BR>if (m_nNumMixers != 0)<BR>{<BR>//打开混合设备<BR>if 
      (::mixerOpen(&amp;m_hMixer,<BR>0,<BR>(DWORD)this-&gt;GetSafeHwnd(),<BR>NULL,<BR>MIXER_OBJECTF_MIXER 
      | CALLBACK_WINDOW)<BR>!= MMSYSERR_NOERROR)<BR>return FALSE;</FONT></P>
      <P><FONT color=#006633 size=2>// 获取混合器性能 <BR>if 
      (::mixerGetDevCaps((UINT)m_hMixer, &amp;m_mxcaps, sizeof(MIXERCAPS))<BR>!= 
      MMSYSERR_NOERROR)<BR>return FALSE;<BR>}<BR>return TRUE;<BR>}<BR>BOOL 
      amdGetMasterVolumeControl()//获得音量控制控件的ID和名称<BR>{<BR>m_strDstLineName.Empty();<BR>m_strVolumeControlName.Empty();<BR>if 
      (m_hMixer == NULL)<BR>return FALSE;<BR>//获得混合器性能<BR>MIXERLINE 
      mxl;<BR>mxl.cbStruct = sizeof(MIXERLINE);<BR>mxl.dwComponentType = 
      MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;<BR>if 
      (::mixerGetLineInfo((HMIXEROBJ)m_hMixer,<BR>&amp;mxl,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_GETLINEINFOF_COMPONENTTYPE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>MIXERCONTROL mxc;<BR>MIXERLINECONTROLS mxlc;<BR>mxlc.cbStruct = 
      sizeof(MIXERLINECONTROLS);<BR>mxlc.dwLineID = 
      mxl.dwLineID;<BR>mxlc.dwControlType = 
      MIXERCONTROL_CONTROLTYPE_VOLUME;//此值表示取得音量<BR>mxlc.cControls = 
      1;<BR>mxlc.cbmxctrl = sizeof(MIXERCONTROL);<BR>mxlc.pamxctrl = 
      &amp;mxc;<BR>//获得混合器线控件<BR>if 
      (::mixerGetLineControls((HMIXEROBJ)m_hMixer,<BR>&amp;mxlc,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_GETLINECONTROLSF_ONEBYTYPE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>//记录控件的信息<BR>m_strDstLineName = 
      mxl.szName;<BR>m_strVolumeControlName = mxc.szName;<BR>m_dwMinimum = 
      mxc.Bounds.dwMinimum;<BR>m_dwMaximum = 
      mxc.Bounds.dwMaximum;<BR>m_dwVolumeControlID = 
      mxc.dwControlID;<BR>mxlc.dwControlType = 
      MIXERCONTROL_CONTROLTYPE_MUTE;//此值表示取得静音与否<BR>if 
      (::mixerGetLineControls((HMIXEROBJ)m_hMixer,<BR>&amp;mxlc,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_GETLINECONTROLSF_ONEBYTYPE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>m_dwMuteControlID = mxc.dwControlID;<BR>return 
      TRUE;<BR>}<BR>BOOL amdGetMasterVolumeValue(DWORD &amp;dwVal)// 
      获得当前音量值,并设置滚动条的初始位置<BR>{<BR>if (m_hMixer == NULL 
      ||<BR>m_strDstLineName.IsEmpty() || 
      m_strVolumeControlName.IsEmpty())<BR>return 
      FALSE;<BR>MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;<BR>MIXERCONTROLDETAILS 
      mxcd;<BR>mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);<BR>mxcd.dwControlID 
      = m_dwVolumeControlID;<BR>mxcd.cChannels = 1;<BR>mxcd.cMultipleItems = 
      0;<BR>mxcd.cbDetails = 
      sizeof(MIXERCONTROLDETAILS_UNSIGNED);<BR>mxcd.paDetails = 
      &amp;mxcdVolume;<BR>//获取指定混合器控件 <BR>if 
      (::mixerGetControlDetails((HMIXEROBJ)m_hMixer,<BR>&amp;mxcd,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_GETCONTROLDETAILSF_VALUE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>dwVal = mxcdVolume.dwValue;<BR>return TRUE;<BR>}<BR>BOOL 
      amdGetMasterMuteValue(BOOL &amp;yorn)//是否静音<BR>{<BR>if (m_hMixer == NULL 
      ||<BR>m_strDstLineName.IsEmpty() || 
      m_strVolumeControlName.IsEmpty())<BR>return 
      FALSE;<BR>MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;<BR>MIXERCONTROLDETAILS 
      mxcd;<BR>mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);<BR>mxcd.dwControlID 
      = m_dwMuteControlID;<BR>mxcd.cChannels = 1;<BR>mxcd.cMultipleItems = 
      0;<BR>mxcd.cbDetails = 
      sizeof(MIXERCONTROLDETAILS_UNSIGNED);<BR>mxcd.paDetails = 
      &amp;mxcdVolume;<BR>//获取指定混合器控件 <BR>if 
      (::mixerGetControlDetails((HMIXEROBJ)m_hMixer,<BR>&amp;mxcd,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_GETCONTROLDETAILSF_VALUE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>yorn = mxcdVolume.dwValue;<BR>return TRUE;<BR>}<BR>BOOL 
      amdSetMasterMuteValue(BOOL &amp;yorn)//设置静音与否<BR>{<BR>if (m_hMixer == NULL 
      ||<BR>m_strDstLineName.IsEmpty() || 
      m_strVolumeControlName.IsEmpty())<BR>return 
      FALSE;<BR>MIXERCONTROLDETAILS_UNSIGNED mxcdVolume = { yorn 
      };<BR>MIXERCONTROLDETAILS mxcd;<BR>mxcd.cbStruct = 
      sizeof(MIXERCONTROLDETAILS);<BR>mxcd.dwControlID = 
      m_dwMuteControlID;<BR>mxcd.cChannels = 1;<BR>mxcd.cMultipleItems = 
      0;<BR>mxcd.cbDetails = 
      sizeof(MIXERCONTROLDETAILS_UNSIGNED);<BR>mxcd.paDetails = 
      &amp;mxcdVolume;<BR>//放置混合器控件 <BR>if 
      (::mixerSetControlDetails((HMIXEROBJ)m_hMixer,<BR>&amp;mxcd,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_SETCONTROLDETAILSF_VALUE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>return TRUE;<BR>}<BR>BOOL amdSetMasterVolumeValue(DWORD 
      dwVal)//设置音量<BR>{<BR>if (m_hMixer == NULL ||<BR>m_strDstLineName.IsEmpty() 
      || m_strVolumeControlName.IsEmpty())<BR>return 
      FALSE;<BR>MIXERCONTROLDETAILS_UNSIGNED mxcdVolume = { dwVal 
      };<BR>MIXERCONTROLDETAILS mxcd;<BR>mxcd.cbStruct = 
      sizeof(MIXERCONTROLDETAILS);<BR>mxcd.dwControlID = 
      m_dwVolumeControlID;<BR>mxcd.cChannels = 1;<BR>mxcd.cMultipleItems = 
      0;<BR>mxcd.cbDetails = 
      sizeof(MIXERCONTROLDETAILS_UNSIGNED);<BR>mxcd.paDetails = 
      &amp;mxcdVolume;<BR>//放置混合器控件 <BR>if 
      (::mixerSetControlDetails((HMIXEROBJ)m_hMixer,<BR>&amp;mxcd,<BR>MIXER_OBJECTF_HMIXER 
      |<BR>MIXER_SETCONTROLDETAILSF_VALUE)<BR>!= MMSYSERR_NOERROR)<BR>return 
      FALSE;<BR>return TRUE;<BR>}<BR>BOOL amdUninitialize()//关闭<BR>{<BR>BOOL 
      bSucc = TRUE;<BR>if (m_hMixer != NULL)<BR>{ <BR>//关闭混合器<BR>bSucc = 
      ::mixerClose(m_hMixer) == MMSYSERR_NOERROR;<BR>m_hMixer = 
      NULL;<BR>}<BR>return bSucc;<BR>}<BR>//在OnDestroy() 
      中加入<BR>amdUninitialize();</FONT></P>
      <P><FONT color=#006633 
      size=2>//编辑注册表*******************************************************</FONT></P>
      <P><FONT color=#006633 size=2>DWORD disp,valuelength=260;<BR>HKEY 
      parentkey;<BR>HKEY childkey;<BR>char 
      filepath[MAX_PATH];<BR>//打开主键<BR>RegOpenKeyEx(HKEY_LOCAL_MACHINE,"software\\microsoft\\windows\\currentversion\\run",//注册启动信息<BR>0L,KEY_WRITE,&amp;parentkey);</FONT></P>
      <P><FONT color=#006633 
      size=2>//查询键值<BR>RegQueryValueEx(parentkey,"Windows秘书",0,NULL,(unsigned 
      char 
      *)filepath,&amp;valuelength);<BR>//写入键值<BR>RegSetValueEx(parentkey,"Windows秘书",0,REG_SZ,(const 
      unsigned char 
      *)filepath,strlen(filepath));<BR>//删除键值<BR>RegDeleteValue(parentkey,"Windows秘书");<BR>//关闭<BR>RegCloseKey(parentkey);<BR>//建立子键<BR>RegOpenKeyEx(HKEY_LOCAL_MACHINE,"software",<BR>0L,KEY_WRITE,&amp;parentkey);//打开主键<BR>RegCreateKeyEx(parentkey,"宇光软件",NULL,"CWindowsDlg",REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,<BR>NULL,&amp;childkey,&amp;disp);//把子键保存在childkey中<BR>RegCloseKey(parentkey);<BR>//在子键中写入子键值<BR>RegSetValueEx(childkey,"Windows秘书",0,REG_SZ,(const 
      unsigned char 
      *)filepath,strlen(filepath));<BR>RegCloseKey(childkey);</FONT></P>
      <P><FONT color=#006633 
      size=2>//创建桌面快捷图标和创建开始菜单组****************************************************</FONT></P>
      <P><FONT color=#006633 size=2>//初始化<BR>CoInitialize 
      (NULL);<BR>//建立桌面快捷图标函数<BR>void CreateDesttop(char 
      *filepath)<BR>{<BR>strcat(filepath,"\\Windows秘书.exe");<BR>LPITEMIDLIST 
      pidlBeginAt;<BR>char szLink[MAX_PATH]="";//快捷方式的数据文件名 <BR>// 
      取得桌面的PIDL<BR>SHGetSpecialFolderLocation( HWND_DESKTOP, 
      <BR>CSIDL_DESKTOPDIRECTORY, &amp;pidlBeginAt) ;<BR>// 
      把PIDL转换为路径名<BR>SHGetPathFromIDList( pidlBeginAt, szLink) 
      ;<BR>strcat(szLink,"\\Windows秘书.lnk");<BR>IShellLink * psl 
      ;<BR>IPersistFile* ppf ;<BR>WORD wsz[ MAX_PATH] 
      ;<BR>//创建一个IShellLink实例<BR>CoCreateInstance( CLSID_ShellLink, 
      NULL,<BR>CLSCTX_INPROC_SERVER, IID_IShellLink,<BR>(void **)&amp;psl) 
      ;<BR>//设置目标应用程序<BR>psl -&gt; SetPath( filepath) 
      ;<BR>//设置快捷键(此处设为Shift+Ctrl+'R')<BR>psl -&gt; SetHotkey( MAKEWORD( 
      'Q',<BR>HOTKEYF_SHIFT |HOTKEYF_CONTROL|HOTKEYF_ALT)) 
      ;<BR>//从IShellLink获取其IPersistFile接口<BR>//用于保存快捷方式的数据文件 (*.lnk)<BR>psl 
      -&gt; QueryInterface( IID_IPersistFile,<BR>(void**)&amp;ppf) ;<BR>// 
      确保数据文件名为ANSI格式<BR>MultiByteToWideChar( CP_ACP, 0, szLink, -1, <BR>wsz, 
      MAX_PATH) ;<BR>//调用IPersistFile::Save<BR>//保存快捷方式的数据文件 (*.lnk)<BR>ppf 
      -&gt; Save( wsz, STGM_READWRITE) ;<BR>//释放IPersistFile和IShellLink接口<BR>ppf 
      -&gt; Release( ) ;<BR>psl -&gt; Release( ) ;</FONT></P>
      <P><FONT color=#006633 size=2>SHChangeNotify( 
      SHCNE_CREATE|SHCNE_INTERRUPT,<BR>SHCNF_FLUSH | 
      SHCNF_PATH,<BR>szLink,0);<BR>//取得szPath的父目录<BR>char* p;<BR>for( 
      p=szLink+lstrlen(szLink)-1;<BR>*p != '\\'; 
      <BR>p--);<BR>*p='\0';<BR>SHChangeNotify(SHCNE_UPDATEDIR<BR>|SHCNE_INTERRUPT, 
      <BR>SHCNF_FLUSH | SHCNF_PATH,szLink,0);<BR>}<BR>//创建开始菜单组的函数<BR>void 
      CWindowsDlg::CreateStarMenu(char *filepath)<BR>{<BR>LPITEMIDLIST 
      pidlBeginAt;<BR>char szPath[ MAX_PATH] ;<BR>// 
      取得开始菜单的PIDL<BR>SHGetSpecialFolderLocation( HWND_DESKTOP, 
      //<BR>CSIDL_STARTMENU, &amp;pidlBeginAt) ;<BR>SHGetPathFromIDList( 
      pidlBeginAt, szPath) ;// 把PIDL转换为路径名<BR>strcat(szPath,"\\宇光软件");<BR>if( 
      !CreateDirectory( szPath, NULL))return ;<BR>SHChangeNotify( 
      SHCNE_MKDIR|SHCNE_INTERRUPT,<BR>SHCNF_FLUSH | 
      SHCNF_PATH,<BR>szPath,0);<BR>//取得szPath的父目录<BR>char* p;<BR>for( 
      p=szPath+lstrlen(szPath)-1;<BR>*p != '\\'; 
      <BR>p--);<BR>*p='\0';<BR>SHChangeNotify(SHCNE_UPDATEDIR<BR>|SHCNE_INTERRUPT, 
      <BR>SHCNF_FLUSH | 
      SHCNF_PATH,szPath,0);<BR>strcat(filepath,"\\Windows秘书.exe");<BR>strcat(szPath,"\\宇光软件\\Windows秘书.lnk");<BR>IShellLink 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -