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

📄 vc常用源码.htm

📁 Hex转换成CString
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      here<BR>m_setComplete.m_strFilter="number=200301";//条件查询(where语句)<BR>if ( 
      ! m_setComplete . IsOpen () )<BR>m_setComplete . Open 
      ();<BR>m_setComplete.Delete();<BR>m_setComplete . MoveFirst 
      ();<BR>m_setComplete . Close (); // close the 
      database<BR>m_setComplete.m_strFilter="";//清空条件(where语句)<BR>//查询(where语句)<BR>m_setComplete.m_strFilter="number=200301";<BR>if 
      ( ! m_setComplete . IsOpen () )<BR>m_setComplete . Open 
      ();<BR>m_setComplete . Close (); // close the database</FONT></P>
      <P><FONT color=#006633 
      size=2>//不用类向导写连接数据库的程序段,但是我只看明白了连接和查询,不会修改和添加,删除</FONT></P>
      <P><FONT color=#006633 size=2>//1,<BR>CDatabase m_dbCust; 
      //定义数据库类对象<BR>m_dbCust.OpenEx(_T("DSN=MQIS;UID=sa;PWD=1980623")//打开数据库 //数据源名,用户名,密码<BR>,CDatabase::forceOdbcDialog 
      );//此参数只定是否打开连接确认对话框<BR>//MessageBox(m_dbCust.GetDatabaseName()); 取得数据源名<BR>//m_dbCust.ExecuteSQL("select 
      number from works");测试是否支持SQL语句<BR>CRecordset 
      cs(&amp;m_dbCust);//定义目录查询对象<BR>cs.Open( CRecordset::dynaset,<BR>_T( 
      "select * from works" ) );//打开时执行的SQL语句<BR>short nFields = 
      cs.GetODBCFieldCount( );//取得字段数,(列数)<BR>CDBVariant 
      varValue;//定义通用数据类型<BR>CODBCFieldInfo co;//定义字段信息<BR>CString 
cc;</FONT></P>
      <P><FONT color=#006633 size=2>while( !cs.IsEOF( ) )<BR>{<BR>for( short 
      index = 0; index &lt; nFields; index++ )<BR>{<BR>// do something with 
      varValue<BR>cs.GetFieldValue(index,varValue);//取得某列的数据,<BR>//cs.GetFieldValue(index,cc); 
      也可直接取得由某列的数据直接转化成的文本<BR>if(varValue.m_dwType==DBVT_LONG)//m_dwType成员用来判断数据类型<BR>/* 
      m_dwType Union data member <BR>DBVT_NULL No union member is valid for 
      access. <BR>DBVT_BOOL m_boolVal <BR>DBVT_UCHAR m_chVal <BR>DBVT_SHORT 
      m_iVal <BR>DBVT_LONG m_lVal <BR>DBVT_SINGLE m_fltVal <BR>DBVT_DOUBLE 
      m_dblVal <BR>DBVT_DATE m_pdate <BR>DBVT_STRING m_pstring <BR>DBVT_BINARY 
      m_pbinary 
      <BR>*/<BR>{<BR>cc.Format("%d",varValue.m_lVal);//m_dwType==DBVT_LONG时为LONG型数据,成员为m_lVal,数值在其中<BR>MessageBox(cc);<BR>}<BR>cs.GetODBCFieldInfo(index,co);//取得字段信息<BR>/* 
      struct CODBCFieldInfo<BR>{<BR>CString m_strName;    字段名<BR>SWORD 
      m_nSQLType;    SQL数据类型<BR>UDWORD m_nPrecision;<BR>SWORD m_nScale;<BR>SWORD 
      m_nNullability;<BR>};<BR>*/<BR>}<BR>cs.MoveNext( 
      );//下一个<BR>}<BR>cs.Close();</FONT></P>
      <P><FONT color=#006633 
      size=2>//显示程序段*********************************************</FONT></P>
      <P><FONT color=#006633 size=2>CString cstr;<BR>cstr.Format("%d", 
      );<BR>MessageBox(cstr);<BR>if(MessageBox("关闭Windows秘书您可会失去重要的提醒信息,确定要关闭吗?",<BR>"Windows秘书",<BR>MB_OKCANCEL|MB_DEFBUTTON2|MB_ICONWARNING)==IDOK)<BR>MessageBeep(MB_ICONQUESTION);</FONT></P>
      <P><FONT color=#006633 
      size=2>//注册与卸载OCX控件****************************************</FONT></P>
      <P><FONT color=#006633 size=2>//1,函数入口宏定义<BR>typedef HRESULT 
      (STDAPICALLTYPE *CTLREGPROC)();<BR>//2,注册函数<BR>BOOL RegisterOcx(CString 
      ocxfilename)<BR>{<BR>BOOL bResult = FALSE ;<BR>HMODULE hModule = 
      ::LoadLibrary(ocxfilename) ;<BR>//获得注册函数地址<BR>CTLREGPROC DLLRegisterServer 
      =<BR>(CTLREGPROC)::GetProcAddress(hModule,"DllRegisterServer" ) ;<BR>if 
      (DLLRegisterServer != NULL)<BR>{<BR>HRESULT regResult = 
      DLLRegisterServer() ;<BR>bResult = (regResult == NOERROR) ; 
      <BR>}<BR>::FreeLibrary(hModule) ;<BR>return bResult 
      ;<BR>}<BR>//2,卸载函数<BR>BOOL UnRegisterOcx(CString ocxfilename)<BR>{<BR>BOOL 
      bResult = FALSE ;<BR>HMODULE hModule = ::LoadLibrary(ocxfilename) 
      ;<BR>//获得卸载函数地址<BR>CTLREGPROC DLLUnregisterServer 
      =<BR>(CTLREGPROC)::GetProcAddress( hModule,<BR>"DllUnregisterServer" ) 
      ;<BR>if (DLLUnregisterServer != NULL)<BR>{<BR>HRESULT regResult = 
      DLLUnregisterServer() ;<BR>bResult = (regResult == NOERROR) ; 
      <BR>}<BR>::FreeLibrary(hModule) ;<BR>return bResult ;<BR>}</FONT></P>
      <P><FONT color=#006633 
      size=2>//处理文件拖动***************************************************************************************</FONT></P>
      <P><FONT color=#006633 size=2>//1 添加 WM_DROPFILES 静态消息<BR>//2 
      在OnInitDialog()函数中加入<BR>DragAcceptFiles(TRUE);//允许拖放<BR>//3 WM_DROPFILES 
      的处理函数为<BR>void CCXatDemoDlg::OnDropFiles(HDROP hDropInfo) 
      <BR>{<BR>unsigned int 
      nFiles=DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);//取得拖放的文件总数<BR>for 
      (unsigned int i=0;i&lt;nFiles;i++)//循环取得文件名<BR>{<BR>unsigned int 
      nLen=DragQueryFile(hDropInfo,i,NULL,0)+1;//取得文件名长度<BR>char *psBuffer=new 
      char[nLen];<BR>unsigned int 
      sLen=DragQueryFile(hDropInfo,i,psBuffer,nLen);//取得文件名到psBuffer中,sLen为实际拷贝的字符数<BR>//To 
      add code here...</FONT></P>
      <P><FONT color=#006633 size=2>delete [] 
      psBuffer;<BR>}<BR>DragFinish(hDropInfo);//结束<BR>}</FONT></P>
      <P><FONT color=#006633 
      size=2>//设置窗口大小和位置******************************************************</FONT></P>
      <P><FONT color=#006633 
      size=2>SetWindowPos(&amp;wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);//设为最高层<BR>/*<BR>wndBottom<BR>wndTop 
      <BR>wndTopMost<BR>wndNoTopMost <BR>*/ <BR>//在窗体中这样做 HWND_NOTOPMOST 
      为不是最高层<BR>::SetWindowPos(AfxGetMainWnd()-&gt;m_hWnd,HWND_TOPMOST,-1,-1,-1,-1,SWP_NOMOVE|SWP_NOSIZE);<BR>/*<BR>HWND_BOTTOM 
      <BR>HWND_NOTOPMOST<BR>HWND_TOP<BR>HWND_TOPMOST <BR>SWP_DRAWFRAME Draws a 
      frame, defined in the class description of the window, around the window. 
      <BR>SWP_FRAMECHANGED Sends a WM_NCCALCSIZE message to the window, even if 
      the size of the window is not being changed. If this flag is not 
      specified, WM_NCCALCSIZE is sent only when the size of the window is being 
      changed. <BR>SWP_HIDEWINDOW Hides the window. <BR>SWP_NOACTIVATE Does not 
      activate the window. If this flag is not set, the window is activated and 
      moved to the top of either the topmost or nontopmost group, depending on 
      the setting of the hWndInsertAfter parameter. <BR>SWP_NOMOVE Retains the 
      current position and ignores the X and Y parameters. <BR>SWP_NOOWNERZORDER 
      Does not change the position in the Z order of the owner window. 
      <BR>SWP_NOREPOSITION Same as the SWP_NOOWNERZORDER flag. <BR>SWP_NOSIZE 
      Retains the current size and ignores the cx and cy parameters. 
      <BR>SWP_NOZORDER Retains the current Z order and ignores the 
      hWndInsertAfter parameter. <BR>SWP_SHOWWINDOW Displays the 
      window.</FONT></P>
      <P><FONT color=#006633 size=2>*/</FONT></P>
      <P><FONT color=#006633 
      size=2>//在系统栏显示图标*****************************************</FONT></P>
      <P><FONT color=#006633 size=2>//1定义结构<BR>NOTIFYICONDATA 
      systemicon;<BR>//2定义新的消息<BR>#define WM_SYSTEMMESSAGE 
      WM_USER+998<BR>//3添加消息函数映射<BR>ON_MESSAGE(WM_SYSTEMMESSAGE,OnSystemMessage)<BR>//4初始化结构<BR>systemicon.cbSize=sizeof(NOTIFYICONDATA); 
      <BR>systemicon.hWnd=this-&gt;m_hWnd; <BR>systemicon.uID=IDI_SYSICON; 
      //图标<BR>systemicon.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; 
      <BR>systemicon.uCallbackMessage=WM_SYSTEMMESSAGE; 
      <BR>systemicon.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_SYSICON)); 
      <BR>strcpy(systemicon.szTip,"Windows秘书"); 
      <BR>Shell_NotifyIcon(NIM_ADD,&amp;systemicon);//显示<BR>strcpy(systemicon.szTip,cs);<BR>Shell_NotifyIcon(NIM_MODIFY,&amp;systemicon);//修改<BR>Shell_NotifyIcon(NIM_DELETE,&amp;systemicon);//删除<BR>//处理函数<BR>void 
      OnSystemMessage(WPARAM wParam, LPARAM 
      lParam)<BR>{<BR>if(wParam!=IDI_SYSICON)<BR>return;<BR>switch(lParam)<BR>{<BR>case 
      WM_RBUTTONUP://右键起来时弹出快捷菜单<BR>{<BR>CMenu *menu=NULL;<BR>LPPOINT 
      mousepoint=new tagPOINT;<BR>::GetCursorPos(mousepoint);//得到鼠标位置<BR>BCMenu 
      bmpmenu;<BR>bmpmenu.LoadMenu(IDR_SYSPOPUPMENU);<BR>menu = 
      bmpmenu.GetSubMenu 
      (0);//确定弹出式菜单的位置<BR>if(IsWindowVisible())<BR>bmpmenu.ModifyODMenuA("隐藏主窗口",ID_SHOWHIDE,IDB_HIDE);<BR>else<BR>bmpmenu.ModifyODMenuA("显示主窗口",ID_SHOWHIDE,IDB_SHOW);<BR>if(findtxdata-&gt;stoplowstep==0)<BR>bmpmenu.ModifyODMenuA("停止普通级提醒",ID_STOPALLPT,IDB_STOP);<BR>else<BR>bmpmenu.ModifyODMenuA("启用普通级提醒",ID_STOPALLPT,IDB_NOTSTOP);<BR>if(topornot)<BR>bmpmenu.ModifyODMenuA("窗体不在最上层",ID_NOTONTOP,IDB_NOTTOP);<BR>else<BR>bmpmenu.ModifyODMenuA("窗体在最上层",ID_NOTONTOP,IDB_TOP);<BR>if(!muteornot)<BR>bmpmenu.ModifyODMenuA("静音",IDMUTE,IDB_NOSOUND);<BR>else<BR>bmpmenu.ModifyODMenuA("取消静音",IDMUTE,IDB_SOUND);<BR>SetForegroundWindow();//必须先调用这个函数才能如果我不选择任何菜单而取消它<BR>menu-&gt;TrackPopupMenu(TPM_LEFTALIGN,mousepoint-&gt;x,mousepoint-&gt;y,this);<BR>//资源回收<BR>//menu-&gt;Detach();<BR>//menu-&gt;DestroyMenu();<BR>delete 
      mousepoint;<BR>break;<BR>}<BR>}<BR>return; <BR>}</FONT></P>
      <P><FONT color=#006633 
      size=2>//浮动鼠标提示*******************************************</FONT></P>
      <P><FONT color=#006633 size=2>//1定义<BR>CToolTipCtrl 
      tooltip;<BR>//2在OnCreate函数中创建<BR>tooltip.Create(this);<BR>//3在OnInitDialog函数中为控件添加提示字符<BR>tooltip.AddTool(GetDlgItem(IDC_DATEANDTIME),"显示日期/时间");<BR>tooltip.Activate(TRUE);//启动<BR>//4在PreTranslateMessage(MSG* 
      pMsg) 函数中加上<BR>tooltip.RelayEvent(pMsg);</FONT></P>
      <P><FONT color=#006633 
      size=2>//tab控件的使用************************************************</FONT></P>
      <P><FONT color=#006633 
      size=2>m_tab.InsertItem(0,"提醒");<BR>//定义结构<BR>WINDOWPLACEMENT 
      wininfo;<BR>//取得窗口信息<BR>m_tab.GetWindowPlacement(&amp;wininfo);<BR>//注意第一个参数要为&amp;wndTop,如果是&amp;wndTopMost就可能会函数功能无效<BR>qita.SetWindowPos(&amp;wndTop,wininfo.rcNormalPosition.left-10,wininfo.rcNormalPosition.top+20,<BR>0,0,SWP_NOSIZE|SWP_HIDEWINDOW);<BR>//选择不同的标签<BR>void 
      OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult) <BR>{<BR>// TODO: Add your 
      control notification handler code here<BR>int 
      i=m_tab.GetCurSel();<BR>switch(i)<BR>{<BR>case 0:<BR>break;<BR>case 
      1:<BR>break;<BR>}<BR>*pResult = 0;<BR>}</FONT></P>
      <P><FONT color=#006633 
      size=2>//注册热键****************************************************</FONT></P>
      <P><FONT color=#006633 
      size=2>//m_filehotkey为热键控件变量<BR>m_filehotkey.GetHotKey(WORD 
      virtualkey,WORD flags);<BR>//注意要在主窗口中调用这个函数<BR>void RegHotKey(WORD 
      virtualkey,WORD flags,int 
      id)<BR>{<BR>if(flags==1||flags==9)//从热键控件中得到的系统键与下函数的标志不同,但有一一对应的关系:<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_SHIFT,virtualkey);<BR>}//每个ID只能注册一个热键,up,down,home,end等中部键盘的键的flags为9,10,11,12,13,14,15<BR>if(flags==2||flags==10)//其余为1,2,3,4,5,6,7<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_CONTROL,virtualkey);<BR>}<BR>if(flags==4||flags==12)<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_ALT,virtualkey);<BR>}<BR>if(flags==3||flags==11)<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_CONTROL|MOD_SHIFT,virtualkey);<BR>}<BR>if(flags==5||flags==13)<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_ALT|MOD_SHIFT,virtualkey);<BR>}<BR>if(flags==6||flags==14)<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_ALT|MOD_CONTROL,virtualkey);<BR>}<BR>if(flags==7||flags==15)<BR>{<BR>RegisterHotKey(GetSafeHwnd(),id,MOD_ALT|MOD_CONTROL|MOD_SHIFT,virtualkey);<BR>}<BR>}<BR>//处理消息<BR>LRESULT 
      CWindowsDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
      <BR>{<BR>// TODO: Add your specialized code here and/or call the base 
      class<BR>switch(message)<BR>{<BR>case WM_HOTKEY 
      :<BR>switch(wParam)<BR>{<BR>case 
      IDC_HOTKEY:<BR>if(IsWindowVisible())<BR>ShowWindow(SW_HIDE);<BR>else<BR>ShowWindow(SW_SHOWNORMAL);<BR>SetForegroundWindow();<BR>break;<BR>case 
      IDC_HOTKEY2: <BR>break; <BR>}<BR>return 0 ;<BR>}<BR>return 
      CDialog::WindowProc(message, wParam, lParam);<BR>}</FONT></P>
      <P><FONT color=#006633 
      size=2>//控制系统音量**********************************************************</FONT></P>
      <P><FONT color=#006633 size=2>//在StdAfx.h中加入宏<BR>#include 
      &lt;mmsystem.h&gt;<BR>//在setting-&gt;Link中加入下静态链接库!<BR>winmm.lib 
      <BR>//播放声音 文件名 风格:第一个参数为文件名/找不到文件时不播放默认声音<BR>PlaySound( "", NULL, 
      SND_FILENAME |SND_NODEFAULT);<BR>//定义结构<BR>UINT m_nNumMixers; 
      //混合器的数量<BR>HMIXER m_hMixer; //当前混合器的句柄<BR>MIXERCAPS m_mxcaps; 
      //当前混合器的性能参数<BR>CString m_strDstLineName, m_strVolumeControlName; 
      //混合器控件的名称<BR>DWORD m_dwMinimum, m_dwMaximum; //最大,最小的音量值<BR>DWORD 
      m_dwVolumeControlID; //混合器控件的音量控制ID<BR>DWORD m_dwMuteControlID; 
      //混合器控件的静音控制ID<BR>BOOL muteornot; //是否静音<BR>DWORD nowvolume; 
      //当前值<BR>double multiple;<BR>double difference; //最大最小差值<BR>int 

⌨️ 快捷键说明

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