专心研究dotnet技术

.net啊.net什么叫.net呢?

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
  22 Posts :: 1 Stories :: 4 Comments :: 1 Trackbacks

公告

2006年6月30日 #

摘要: Windows类型 样本变量 MFC类 样本变量 HWND hWnd; CWnd* pWnd; HDLG hDlg; CDialog* pDlg; HDC hDC; CDC* pDC; HGDIOBJ hGdiObj; CGdiObject* pGdiObj; HPEN hPen; CPen* pPen; HBRUSH hBrush; CBrush* pBrush; HFONT hFont; CF...阅读全文
posted @ 2006-06-30 22:31 xxsdfsdf 阅读(249) 评论(0) 编辑

摘要: 首先我会罗列出一些获取句柄的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 阅读(879) 评论(0) 编辑

摘要: 看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。

CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多和字符串有关,典型的有:缓冲溢出、内存泄漏等。而且这些bug都是致命的,会造成系统的瘫痪。因此c++里就专门的做了一个类用来维护字符串指针。标准c++里的字符串类是string,在microsoft MFC类库中使用的是CString类。通过字符串类,可以大大的避免c中的关于字符串指针的那些问题。

阅读全文
posted @ 2006-06-30 22:28 xxsdfsdf 阅读(1027) 评论(0) 编辑

摘要: (1)所有数据都应该隐藏在所在的类的内部。p13 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15 (3)尽量减少类的协议中的消息。p16 (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 p16 (5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。p17 如果类的两个方法有一段公...阅读全文
posted @ 2006-06-30 22:27 xxsdfsdf 阅读(351) 评论(0) 编辑

摘要: 解析C语言中的sizeof

一、sizeof的概念 
  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 

二、sizeof的使用方法 
  1、用于数据类型 

  sizeof使用形式:sizeof(type) 

  数据类型必须用括号括住。如sizeof(int)。 

阅读全文
posted @ 2006-06-30 22:26 xxsdfsdf 阅读(595) 评论(0) 编辑

摘要: AND_CATCHAND_CATCH AND_CATCH(exception_class,exception _object_point_name) 说明:定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_CATCH块中调用TH...阅读全文
posted @ 2006-06-30 22:23 xxsdfsdf 阅读(323) 评论(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 阅读(555) 评论(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 阅读(385) 评论(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 { LPCSTR p = va_arg(argList,LPCSTR); m_pList->SetItemText(nIndex,nCount,p); } va_end(argList); return nIndex; } //初始化ListCtrl风格,表头的函数 void CMyListCtrl::initListCtrl(CWn阅读全文
posted @ 2006-06-30 22:20 xxsdfsdf 阅读(1176) 评论(0) 编辑

摘要: CDialog的OnOK虚函数控制了OK按钮,它负责触发数据交换以及从对话框中退出,然而,Enter键碰巧也具有同样的效果。也许这是我们所需要的,也可能我们不需要这一功能,就是说不希望用户在编辑框中按Enter键后出现关闭程序的情况。怎么解决这一问题?

一、原因

当用户按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,Windows就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。如果对话框没有默认按钮,那么即使对话框中没有OK按钮,OnOK函数也会自动被调用。

二、解决办法
首先建立一个基于对话框的程序。

1.直接把要接受默认OnOK的按钮设置成Default。。这样按回车的时候将自动触发这按钮事件。

2.添加虚函数OnOK(),然后在里面进行自己的处理或调用验证函数等。阅读全文
posted @ 2006-06-30 22:18 xxsdfsdf 阅读(636) 评论(2) 编辑