VC/MFC
文章平均质量分 53
goodwinds
fighting
展开
-
动态改变Picture控件上的位图
动态改变Picture控件上的位图 DrawPicture(int nBmpResource){ CDC dcmem; CClientDC dc(this); dcmem.CreateCompatibleDC(&dc); CBitmap m_Bitmap; m_Bitmap.LoadBitmap(nBmpResource); dcmem.Sel原创 2008-02-22 15:36:00 · 1011 阅读 · 0 评论 -
托盘图标
生成托盘图标在CXXXDlg中定义成员函数NOTIFYICONDATA nid;void CXXXDlg::Hiden(){ nid.cbSize = sizeof(nid); //NIF_MESSAGE表示发送控制消息 //NIF_ICON 表示显示控制栏中的托盘图标 //NIF_TIP 表示任务栏中的托盘图标有动态提示 nid.uFlag原创 2008-06-05 14:51:00 · 721 阅读 · 0 评论 -
TAB控件
void CBasicInfoShowDlg::InitForm(){ //插入两个标签页 this->m_cTab.InsertItem(0,_T("tab1")); this->m_cTab.InsertItem(1,_T("tab2")); CRect rect; this->GetDlgItem(IDC_STATIC_Rect)->GetWindowRe原创 2008-06-05 17:31:00 · 808 阅读 · 0 评论 -
控件右键弹出菜单
CPoint point;::GetCursorPos(&point);CMenu menu;menu.LoadMenu(IDR_MENU_LogView);CMenu *pSubMenu=menu.GetSubMenu(0);pSubMenu->TrackPopupMenu(TPM_RIGHTBUTTON, point.x, point.y,this);原创 2008-06-06 10:34:00 · 498 阅读 · 0 评论 -
字符串格式化
CString strDateTime;strDateTime=CTime::GetCurrentTime().Format( _T( "%Y-%m-%d %H:%M:%S" ) );原创 2008-06-06 11:00:00 · 519 阅读 · 0 评论 -
CryptoAPI -计算md5
//输入内容的缓冲区 输出内容的缓冲区 输入内容的长度BOOL MD5Digest(PBYTE csBuffer,LPTSTR csOutBuffer,DWORD dwLen){ HCRYPTPROV hCryptProv; HCRYPTHASH hHash; BYTE bHash[0x7f]; DWORD dwHashLen= 32; //原创 2008-06-12 15:49:00 · 1392 阅读 · 0 评论 -
文件操作记录
方法一。这种方式无法监视到文件的修改,只有右键属性中修改文件的操作才能监视到。注册BOOL Register(HWND hWnd){ SHChangeNotifyEntry pfsne; LPITEMIDLIST pidl; if(NOERROR == SHGetSpecialFolderLocation(hWnd,CSIDL_DE原创 2008-06-12 14:53:00 · 4224 阅读 · 0 评论 -
枚举控件
HWND CurWindowHandle=::GetTopWindow(NULL); do { TCHAR TitleText[500]; ::GetWindowText(CurWindowHandle,TitleText,500); if(StrStr(TitleText,_T("格式化"))!=NULL) //找到格式化对话原创 2008-06-11 08:42:00 · 1386 阅读 · 0 评论 -
在服务中启动带有界面的程序
//在服务中启动带有界面的程序。BOOL RunProcess(LPCTSTR lpImage){ if(!lpImage) { return FALSE; } HANDLE hToken; if(!GetTokenByName(hToken,_T("explorer.exe"))) { retur原创 2008-06-17 18:51:00 · 1039 阅读 · 0 评论 -
控制台程序中实现消息传递
http://www.codeproject.com/KB/winsdk/console_event_handling.aspx用PostThreadMessage,在线程里循环调用GetMessage或者PeekMessage接受消息,和有窗口一样原创 2009-04-19 21:25:00 · 2166 阅读 · 0 评论 -
MS-VC 使用MAP文件快速定位程序崩溃代码行
程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。 在VC中,我们可以利用出现程序崩溃时VC的自动跳转,定位到出错代码行。但在大量的压力测试转载 2009-05-23 23:09:00 · 2393 阅读 · 0 评论 -
CListCtrl
CListCtrl是列表控件类,列表控件的每一行叫做一个item,每一列叫做一个subitem。每一行和每一列都有个ID号,可以确定唯一的单元格。最近使用了这个控件,有心得总结如下: (Dialog模式)转载 2009-12-04 22:30:00 · 2058 阅读 · 0 评论 -
去掉属性页的帮助按钮
重载CPropertySheet类,在它的OnInitDialog函数中添加 //向导模式下ID_WIZNEXT,ID_WIZFINISH, ID_WIZBACK, IDCANCEL int ids [] = ...{ID_WIZBACK ,ID_WIZNEXT, IDCANCEL};//, ID_APPLY_NOW, IDHELP }; CRect rectBtn,原创 2008-05-23 15:47:00 · 1377 阅读 · 0 评论 -
根据盘符安全移除U盘
////////////////////// //http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx //根据盘符停止U盘 //////////////////////// BOOL CPubFunction::StopDeviceByLetter(LPCTSTR lpDisk) {转载 2008-08-04 10:51:00 · 3288 阅读 · 0 评论 -
设置exe程序在安全模式自启动
1.写成服务形式,在 HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SafeBoot 和 HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SafeBoot//Minimal 下加入相应的子项。设置值为Service 2.在注册表 H原创 2008-07-29 18:23:00 · 2410 阅读 · 2 评论 -
正则表达式
ATL CATLRegExpGRETA1.先编译静态库注意 连接使用的CRT库(C运行时库)版本必须一致(Project setting -> c/c++ -> category 选择 code generation -> user run-time library 选择相同的库即可 )生成了greta.lib和regexpr2.h,加到需要的工程原创 2008-02-29 09:46:00 · 639 阅读 · 0 评论 -
IIS 无法启动:发生意外错误0x8ffe2740 的原因
解决方法要解决这个问题,您可以进行以下任一项操作:• 在IIS管理器中更改网站绑定端口为除80端口外的其它端口. • 停止正在使用80端口的应用程序,然后从IIS管理器中启动网站. 更多信息您可以使用诸如TCPView或FPort等第三方工具来判断其它正在使用80端口的其它应用程序.今天启动IIS报错,上网一查,说是80端口正在使用。把迅雷关了,马上可以了。原创 2008-03-05 15:04:00 · 473 阅读 · 0 评论 -
CreateWaitableTimer编译通不过
#define _WIN32_WINNT 0x0400 #include 原因是:这个函数在winbase.h中是条件编译,需要_WIN32_WINNT >= 0x0400才声明CreateWaitableTimer,但是在windows.h和winbase.h中都未定义CreateWaitableTimer实例 #define _WIN32_WINN转载 2007-12-18 10:02:00 · 912 阅读 · 0 评论 -
dll向exe发送消息
钩子dll向一窗口发送消息: 发消息用SendMessage()或PostMessage() 如果hook dll与exe在同一进程,用SendMessage(),PostMessage()。如果在不同的进程中,可用sendMessage(hWnd, WM_COPYDATA, wParam, lParam)。 可定义exe程序主窗口的类名,在hook dll里面用Fin原创 2007-12-19 14:38:00 · 3667 阅读 · 0 评论 -
物理盘,逻辑盘对应?
首先通过指定GUID,用SetupDiGetClassDevs,得到Harddisk类和Volume两大类设备的所有设备信息。 DEFINE_GUID / (HARDDISK_GUID, 0x53f56307, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);原创 2008-03-31 16:32:00 · 2500 阅读 · 0 评论 -
CTreeCtrl使用
插入树节点TV_ITEM tvItem;tvItem.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_HANDLE | TVIF_SELECTEDIMAGE | TVIS_SELECTED | TVIS_EXPANDED; CString TmpStr = "文本内容"tvItem.pszText =(LPWSTR)(LPCTSTR)Tm原创 2008-04-15 16:21:00 · 1980 阅读 · 0 评论 -
detours库的编译
1.5版本编译,用vs2003建一个win32工程,选lib项目。然后把所有的源文件加入进来,编译就可以了。2.1版本编译,同上,但可能出错,fatal error C1189: #error : Must define one of DETOURS_X86, DETOURS_X64, or DETOURS_IA64 在引用Detours的头文件之前补原创 2008-07-09 18:07:00 · 3115 阅读 · 1 评论 -
调用树控件的DeleteAllItems的问题
在对话框中使用树控件,调用树控件的DeleteAllItems()后,再调用InsertItem()添加新项目,添加后不能显示新添加的内容。解决方法如下:m_tree.SetRedraw(FALSE); //do erase and insert operationm_tree.SetRedraw(TRUE); m_tree.RedrawWindow();原创 2008-07-09 18:03:00 · 984 阅读 · 0 评论 -
CTreeCtrl的HitTest用法
void CMyDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult){ // TODO: 在此添加控件通知处理程序代码 CPoint pt; UINT nFlags; ::GetCursorPos(&pt); ::ScreenToClient(m_cTree.m_hWn原创 2008-07-14 18:50:00 · 7015 阅读 · 2 评论 -
在程序中移除U盘
#include #include #include #define DWORD_PTR DWORD #define ULONG_PTR DWORD extern "C" { #include "hidsdi.h" }原创 2008-07-22 17:20:00 · 5068 阅读 · 2 评论 -
把程序添加到开始菜单
#define REG_SHELLFODLER _T("Software//Microsoft//Windows//CurrentVersion//Explorer//Shell Folders")void CTestDlg::OnBnClickedButton7(){ // TODO: 在此添加控件通知处理程序代码 CString szLink , szPath;原创 2008-07-25 10:05:00 · 5042 阅读 · 1 评论 -
eMule代码分析-托盘图标
1. 托盘图标 电驴的托盘图标的截图。相关代码的实现在CemuleDlg::OnTrayRButtonUp里面。void CemuleDlg::OnTrayRButtonUp(CPoint pt){ .............. if (m_pSystrayDlg) { m_pSystrayDlg->BringWindowToTop();原创 2009-12-06 17:31:00 · 799 阅读 · 0 评论