📄 vc常用源码.htm
字号:
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(&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 < 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<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(&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()->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->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,&systemicon);//显示<BR>strcpy(systemicon.szTip,cs);<BR>Shell_NotifyIcon(NIM_MODIFY,&systemicon);//修改<BR>Shell_NotifyIcon(NIM_DELETE,&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->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->TrackPopupMenu(TPM_LEFTALIGN,mousepoint->x,mousepoint->y,this);<BR>//资源回收<BR>//menu->Detach();<BR>//menu->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(&wininfo);<BR>//注意第一个参数要为&wndTop,如果是&wndTopMost就可能会函数功能无效<BR>qita.SetWindowPos(&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
<mmsystem.h><BR>//在setting->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 + -