WEB开发网
开发学院软件开发VC VC 和 MFC 的一些常见问题 阅读

VC 和 MFC 的一些常见问题

 2007-03-30 21:32:12 来源:WEB开发网   
核心提示:如何抛出(throw)由CUserException派生的异常?当我试图捕获(catch)一个派生类异常时,我得到以下错误"error C2039:'classCMyException': is not a member of 'CMyException' 'class

如何抛出(throw)由CUserException派生的异常?

当我试图捕获(catch)一个派生类异常时,我得到以下错误"error C2039:'classCMyException': is not a member of 'CMyException' 'classCMyException': undeclared identifier 'IsKindOf': cannot convert parameter 1 from 'int*' to 'const struct CRuntimeClass*"

你必需通过使用DECLARE_DYNAMIC()和IMPLEMENT_DYNAMIC()宏来使你的CMyException类可以动态地创建。CATCH宏希望能够得到关于被抛出类的运行时刻信息。

异常类一定要从CUserException中派生出来吗?

不,CUserException中的"User"仅仅指用户产生的异常。而把它当作你所能派生的唯一异常是种常见的误解。

如何从HDC建立一个CDC类?

有时Windows API将会给你一个DC句柄,你可以通过它建立一个CDC类。例如:下拉式列表、组合框和按钮。通过hDC你将接收到绘制消息。下面是将HDC转换成你更熟悉的CDC的程序段。你也可以将该技巧用在其他任何MFC类和Windows句柄的转换中。

void MyODList::DrawItem(LPDRAWITEMSTRUCT lpDrawItem)
{
  CDC myDC;
  myDC.Attach(lpDrawItem->hDC);
  //在此插入其他需要的代码。
  //如果你不将句柄分离,它将被删除,从而导致问题。
  myDC.Detach();
}
另一个方法是调用CDC类的FromHandle方法:
      CDC * pDC = CDC:FromHandle(lpDrawItem->hDC);
目前还不清楚哪种方法更优越―使用FromHandle()的错误也许会更少些,因为它不要求你分离(detach)句柄。

如何从磁盘上读取256色位图文件?

1 2 3 4 5 6  下一页

Tags:VC MFC 一些

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接