posted @ 2006-06-30 22:31 xxsdfsdf 阅读(203) 评论(0) 编辑
专心研究dotnet技术.net啊.net什么叫.net呢? |
公告 |
2006年6月30日 # 摘要: 首先我会罗列出一些获取句柄的win32 api 函数,然后简单说说他们的用途!最后说说我是怎么理解和应用的。见笑了!
可用的win32 api函数: 1.HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName) 2.HWND WindowFromPoint(POINT& Point) 3.BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam) BOOL CALLBACK 阅读全文
posted @ 2006-06-30 22:29 xxsdfsdf 阅读(826) 评论(0) 编辑
摘要: 看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。
CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多和字符串有关,典型的有:缓冲溢出、内存泄漏等。而且这些bug都是致命的,会造成系统的瘫痪。因此c++里就专门的做了一个类用来维护字符串指针。标准c++里的字符串类是string,在microsoft MFC类库中使用的是CString类。通过字符串类,可以大大的避免c中的关于字符串指针的那些问题。 阅读全文
posted @ 2006-06-30 22:28 xxsdfsdf 阅读(926) 评论(0) 编辑
摘要: 解析C语言中的sizeof
一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。 阅读全文
posted @ 2006-06-30 22:26 xxsdfsdf 阅读(490) 评论(0) 编辑
摘要: 1.创建一个表的映射
创建一个类,如CUserSet让它继承于CRecordset,创建完后VC让选择ODBC中的库,然后指定表我们选择user表,这样这个类基本上就和表user进行了映射.一定要在UserSet.h加入#include 2.新增一条记录 CUserSet userset;//创建一个类的对象 userset.Open(CRecordset::snapshot,"select * from user"); userset.AddNew(); userset.m_username = "月风"; //把你要新加的内容传给记录集类对应数据库的字段 userset.m_sex="男"; userset.Update(); userset.Close(); 2.修改一条记录 CUserSet userset;//创建一个类的对象 CString strSql; strSq阅读全文
posted @ 2006-06-30 22:22 xxsdfsdf 阅读(478) 评论(1) 编辑
摘要: 重复启动关闭MDI程序的子窗口就会出现一个异常,然后就中断到:
inline _variant_t::_variant_t(IDispatch* pSrc, bool fAddRef) throw() { V_VT(this) = VT_DISPATCH; V_DISPATCH(this) = pSrc; // Need the AddRef() as VariantClear() calls Release(), unless fAddRef // false indicates we're taking ownership // if (fAddRef) { V_DISPATCH(this)->AddRef(); 《--------这一行。 } } 并且fAddRef的value是1,开始还以为启动子FRMAE的时候哪地方没有释放或关闭,最后跟踪啊调试啊找问题啊,最后找到罪魁祸首的是我自己封装的数据库类,在构造函数中没有调用::CoInitialize(NUL阅读全文
posted @ 2006-06-30 22:21 xxsdfsdf 阅读(266) 评论(0) 编辑
摘要: //自己封装了一个插入List行的函数
int CMyListCtrl::insertRow(int nPos,int nNoOfCols,LPCTSTR pText,...) { va_list argList; va_start(argList, pText); int nCount,nIndex; nIndex = m_pList->InsertItem(nPos,pText); for(nCount=1;nCount m_pList->SetItemText(nIndex,nCount,p); } va_end(argList); return nIndex; } //初始化ListCtrl风格,表头的函数 void CMyListCtrl::initListCtrl(CWn阅读全文
posted @ 2006-06-30 22:20 xxsdfsdf 阅读(804) 评论(0) 编辑
摘要: CDialog的OnOK虚函数控制了OK按钮,它负责触发数据交换以及从对话框中退出,然而,Enter键碰巧也具有同样的效果。也许这是我们所需要的,也可能我们不需要这一功能,就是说不希望用户在编辑框中按Enter键后出现关闭程序的情况。怎么解决这一问题?
一、原因 当用户按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,Windows就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。如果对话框没有默认按钮,那么即使对话框中没有OK按钮,OnOK函数也会自动被调用。 二、解决办法 首先建立一个基于对话框的程序。 1.直接把要接受默认OnOK的按钮设置成Default。。这样按回车的时候将自动触发这按钮事件。 2.添加虚函数OnOK(),然后在里面进行自己的处理或调用验证函数等。阅读全文
posted @ 2006-06-30 22:18 xxsdfsdf 阅读(572) 评论(2) 编辑
摘要: AfxBeginThread:开始一个新的线程
AfxEndThread:结束一个旧的线程 AfxFormatString1:类似printf一般地将字符串格式化 AfxFormatString2:类似printf一般地将字符串格式化 AfxMessageBox:类似Windows API 函数 MessageBox AfxOuputDebugString:将字符串输往除错装置 AfxGetApp:获得application object (CwinApp派生对象)的指针 AfxGetMainWnd:获得程序主窗口的指针 AfxGetInstance:获得程序的instance handle MFC数据类型 下面这些是和Win32程序共同使用的数据类型 BOOL:布尔值,取值为TRUE or FALSE BSTR:32-bit 字符指针 BYTE:8-bit整数,未带正负号 COLORREF:32-bit数值,代表一个颜色值 DWORD:32-bit整数,未带正负号 阅读全文
posted @ 2006-06-30 22:17 xxsdfsdf 阅读(931) 评论(0) 编辑
摘要: 1.打开数据库
CDatabase database; database.OpenEx( _T( "DSN=zhuxue" ),CDatabase::noOdbcDialog);//zhuxue为数据源名称 2.关联记录集 CRecordset recset(&database); 3.查询记录 CString sSql1=""; sSql1 = "SELECT * FROM tablename" ; recset.Open(CRecordset::forwardOnly, sSql1, CRecordset::readOnly); int ti=0; CDBVariant var;//var可以转换为其他类型的值 while (!recset.IsEOF()) { //读取Excel内部数值 recset.GetFieldValue("id",var); 阅读全文
posted @ 2006-06-30 22:10 xxsdfsdf 阅读(1191) 评论(1) 编辑
|