WEB开发网
开发学院软件开发VC 你有GIF的开发许可吗?PrecSubclassWindow 以及 M... 阅读

你有GIF的开发许可吗?PrecSubclassWindow 以及 MFC 中的 EOF

 2009-02-21 20:00:10 来源:WEB开发网   
核心提示: 但是当你将控件与某个 CWnd 派生类的对象实例关联时,比如你的特殊列表框,你有GIF的开发许可吗?PrecSubclassWindow 以及 MFC 中的 EOF(3),你得调用 SubclassDlgItem 来实现,它又会调用SubclassWindow,CFile file;fil

但是当你将控件与某个 CWnd 派生类的对象实例关联时,比如你的特殊列表框。你得调用 SubclassDlgItem 来实现,它又会调用SubclassWindow。 此时 MFC 会调用另一个特殊的虚函数——PreSubclassWindow。正是你在这里,你有机会做一些事情(比如改变样式)。

void CMyListBox::PreSubclassWindow()
{
 // turn on owner-draw
 ModifyStyle(0,LBS_OWNERDRAWFIXED);
}

事实上,PreSubclassWindow 是做这些工作的最佳场所,因为当你用 CreateEx 创建窗口时,MFC也会调用 PreSubclassWindow。换句话说,PreSubclassWindow 可以覆盖 了两种情况(不管是在对话框中创建还是单独创建)。因此,当你在 PreSubclassWindow 设置样式时,就不用再在 PreCreatWindow 中做同样的事了。

我正在程序中使用 CFile 类,我知道如何使用这个类来打开、写入和关闭文件,但不知道(这个很重要)如何在文件末尾(EOF)读文件。我处理了 CFileException::endOfFile,但得到一个无穷循环。

Alessandro Chiodo

这样做好像有点古怪,不是吗?我的意思是,当你读到文件末尾时,希望得到一个 end-of-file 异常,对吗?一个 endOfFile 异常有什么好吗?正如所看到的,MFC在这种情况下并不使用 CFileException::endOfFile。为了检查文件尾,可以测试实际读到的字节数是否小于所希望的字节数。

CFile file;
file.Open();
char mybuf[BUFSIZ];
UINT nread;
do (nread=file.read(buf, BUFSIZ)) {
 ...
// process nread bytes
} while (nread==BUFSIZ);

用这种方法好像有点奇怪,但我并不想规定这样做,只是说可以这样做。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:GIF 开发 许可

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