BtimapToRegion

网上找到的,先记下来,还未做测试 HRGN BitmapToRegion(HBITMAP hBmp, COLORREF cTransparentColor, COLORREF cTolerance){ HRGN hRgn = NULL; if (hBmp) { HDC hMemDC = CreateCompatibleDC(NULL); if (hMemDC) { BITMAP bm; GetObject(hBmp, sizeof(bm), &bm); //创建一个32位色的位图,并选进内存设备环境 BITMAPINFOHEADER RGB3...
2012-05-29 11:33 | 阅读 1099 次 | 评论 0 条

创建在任务栏上不显示图标的对话框程序

原理: 首先创建一个不可见的窗口,然后使该窗口作为对话框的父窗口,这样出来的对话框就不在任务栏上显示图标了。 代码: 在App类中增加CWnd对象m_wndOwner 在InitInstance函数中添加代码 。。。 if(m_wndOwner.m_hWnd == NULL) { LPCTSTR pstrOwnerClass = AfxRegisterWndClass(0); if ( !m_wndOwner.CreateEx(0, pstrOwnerClass, _T(""), //创建一个隐藏的弹出样式的窗口 WS_POPUP, CW_USE...
2010-12-21 17:25 | 阅读 1078 次 | 评论 0 条

socketmap

// Socketmap.h: interface for the CSocketmap class.//////////////////////////////////////////////////////////////////////// #ifndef _SOCKETMAP_H_#define _SOCKETMAP_H_ template<class VALUE>class CSocketQueue {public: CSocketQueue(); ~CSocketQueue(); int GetCount(){return m_nCount;}; bool InitQu...
2010-10-26 14:13 | 阅读 1027 次 | 评论 0 条

SIO_RCVALL

#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
2010-09-28 13:22 | 阅读 1033 次 | 评论 0 条

带连接超时的Connect

int ConnectWithTimeout (SOCKET sock,struct sockaddr *addr,int addrlen,struct timeval *timeout){ int nRet = 0; unsigned long nonblocking = 1; unsigned long blocking = 0; if(!timeout) return connect(sock, addr, addrlen); ioctlsocket(sock, FIONBIO, &amp;nonblocking); if(conn...
2010-09-13 22:32 | 阅读 1004 次 | 评论 0 条

修改windows服务描述信息

void ReconfigureService(LPSTR lpServiceName, LPSTR lpDesc) { SC_HANDLE schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(schSCManager != NULL) { //Need to acquire database lock before reconfiguring. SC_LOCK sclLock = LockServiceDatabase(sch...
2010-09-06 14:24 | 阅读 2872 次 | 评论 0 条

在GUI程序中使用printf函数:

#include <io.h>#include <fcntl.h> void InitConsole(){ int nRet= 0; FILE* fp; AllocConsole(); nRet= _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT); fp = _fdopen(nRet, "w"); *stdout = *fp; setvbuf(stdout, NULL, _IONBF, 0);} 在程序初始化处加上以上函数即可 转自:http://blog.csd...
2010-05-04 17:10 | 阅读 1104 次 | 评论 0 条

MyCreateDirectory

BOOL CExportDlg::MyCreateDirectory(CString strDirectory){ int nPos; int nTempPos; CString strTemp; CFileFind ff; BOOL bFind = ff.FindFile(strDirectory); if(bFind)//有此目录 return TRUE; nPos = strDirectory.Find("\\",3); if(nPos < 0) nPos = strDirectory.Find("/",3); if(nPos < 0) return FALSE; while...
2010-01-26 11:08 | 阅读 1168 次 | 评论 0 条

WriteLog

void WriteLog(CString content){ g_cs.Lock(); SYSTEMTIME st; CString strtm, strout; ::GetLocalTime(&amp;st); strtm.Format("%d-%.2d-%.2d %.2d:%.2d:%.2d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond); strout.Format("<%s> %s\r\n",strtm,content); OutputDebugString(strout); char moduleF...
2010-01-22 13:36 | 阅读 1107 次 | 评论 0 条

循环缓冲区

// Buffer.h: interface for the CBuffer class.//////////////////////////////////////////////////////////////////////// #if !defined(AFX_BUFFER_H__B477EDB0_45FF_4DCC_910F_1EF9BF4F94DF__INCLUDED_)#define AFX_BUFFER_H__B477EDB0_45FF_4DCC_910F_1EF9BF4F94DF__INCLUDED_ #if _MSC_VER > 1000#pragma once#...
2010-01-17 12:41 | 阅读 1165 次 | 评论 0 条

截断中文字符串

void CAaaaDlg::TruncateString(CString input, CStringArray&amp; strArray, int length){ int len = input.GetLength() ; BYTE* flag = new BYTE[len]; memset(flag,0,len); BYTE f = 0; for(int i=0;i<len;i++) { if((BYTE)input.GetAt(i) > 0xa0) f++; else f = 0; flag[i] = f; } long nowLen = 0; long old...
2009-10-13 17:16 | 阅读 886 次 | 评论 0 条

ASCII码转化为UNICODE

void GBToUnicode(LPCSTR lpszAnsi, LPWSTR lpszWide) { int nSize=MultiByteToWideChar( CP_ACP,0, lpszAnsi,-1,NULL,0); MultiByteToWideChar( CP_ACP,0, lpszAnsi,-1,lpszWide,nSize); }
2009-09-23 17:19 | 阅读 811 次 | 评论 0 条

修复数据库一致性问题

1. 数据库附加一致性问题, 第一新建一个数据库,把SQL停此后,然后把要附加的数据库更名,(注意改成刚才新建的数据库名,替换他的数据库) 运行查询分析器,选择刚才的数据库 第一步:运行 sp_dboption @DBNAME='这里是你的数据库名', @OPTNAME='SINGLE USER', @OPTVALUE='TRUE'第二步:运行 DBCC CHECKDB ('这里是你的数据库名',REPAIR_ALLOW_DATA_LOSS)第三步:运行 sp_dboption @DBNAME='这里是你的数据库名', @OPTNAME='SINGLE USER', @OPTVA...
2009-07-03 10:01 | 阅读 3345 次 | 评论 0 条

系统托盘图标右键菜单

void CMainFrame::OnTrayMessage(WPARAM wParam, LPARAM lParam){ if (lParam == WM_LBUTTONDBLCLK) { ShowWindow(SW_RESTORE); } else if (lParam == WM_RBUTTONDOWN) { CPoint m_point; ::GetCursorPos(&amp;m_point); CMenu menu; menu.LoadMenu(IDM_TRAYMENU); CMenu* submenu = menu.GetSubMenu(0); SetFo...
2009-04-23 13:16 | 阅读 2624 次 | 评论 0 条

新线程中使用CSocket

当工程的设置为“使用mfc作为静态的链接库”时,在新线程中使用CSocket,当进行Create操作时,会出错 解决办法: 在新线程中重新调用AfxSocketInit()进行Socket的初始化
2009-04-22 15:27 | 阅读 2542 次 | 评论 0 条

GetModuleFilePath()

CString CServices::GetModuleFilePath(){ TCHAR szFile[255]={0}; CString str = _T(""); DWORD dwRet = GetModuleFileName(NULL,szFile,255); if(dwRet!=0) { str = _T(szFile); int nPos = str.ReverseFind('\\'); if(nPos!=-1) { str = str.Left(nPos+1); } } return str;}
2009-04-21 12:48 | 阅读 11243 次 | 评论 0 条

_tcsrchr

查找字符串中某个字符最后一次出现的位置 两个参数 第一个参数:字符串 第二个参数:查找的字符 返回值:指向最后一次在字符串中出现的该字符的指针,如果要查找的字符再串中没有出现,则返回NULL。
2009-04-17 17:33 | 阅读 5032 次 | 评论 0 条

设置PropertyPage标题的三种方法

(1)创建时传入字符串资源IDm_pPage1 = new CMyPropertyPage(IDS_MYCAPTION); (2)修改CPropertyPage.m_pspm_pPage1->m_psp.dwFlags |= PSP_USETITLE;m_pPage1->m_psp.pszTitle = _T("My Caption");注意:这种修改只能在CPropertySheet的Create和DoModal之前进行; 如果是从文件中读出一个字符串来进行设置,最好把这个字符串放在一个静态字符数组里面,例如static char strTitle[32];m_pP...
2009-04-14 17:08 | 阅读 3042 次 | 评论 0 条

ado调用存储过程

存储过程为: create procedure [dbo].[ps_show1] @maxID intasselect * from ImportBatchwhere BatchID <= @maxID存储过程要求输入一个参数,同时返回一个记录集下面是应用程序中访问存储过程的关键代码: _RecordsetPtr m_pRecordSetTemp = NULL; _ConnectionPtr m_pConnection = NULL; _CommandPtr m_pCommand = NULL; _bstr_t strCon( "...
2009-04-12 09:10 | 阅读 3244 次 | 评论 0 条

CListCtrl设置选定行

m_list.SetItemState(1, LVIS_SELECTED, LVIS_SELECTED); m_list.SetFocus(); 一定要有那个SetFocus()才可以
2009-04-03 10:23 | 阅读 3720 次 | 评论 0 条
浏览51948次
文章分类
最新评论