你有GIF的开发许可吗?PrecSubclassWindow 以及 MFC 中的 EOF
2009-02-21 20:00:10 来源:WEB开发网不幸的是,最终的结果就是这样,我不能给你任何帮助。如果你正在写一个读写GIF的程序,你应该去Unisys网站来自己确定。Unisys工作人员会很 乐意给你他们律师的电话。很明显,整个关于GIF/LZW专利权的事情引起了很大的争议,其中一方是信仰软件开源的人。你可以去 http://lzw.info 对“LZW patent”作一个快速预览或者搜索相关的网站。
我有一个CListBox的子类。为了使用它的扩展功能,列表框必须是自绘的。我改写了 PreCreateWindow 虚函数来强制设置LBS_OWNERDRAWFIXED 样式。如果列表框是 由我自己动态创建的则运行正常。如果列表框作为对话框的一部分从资源加载,则怎么也不会调用 PreCreateWindow。这种情况下我怎样才能保证 LBS_OWNERDRAWFIXED 样式被设置呢?
Frank Lagattuta
简短的回答是:使用 PreSubclassWindow。
以下是详细的使用方法。PreCreateWindow 是一个由 MFC 调用的特殊的 CWnd 虚函数,你可能已经猜到了,该函数是在创建窗口前被调用。 也就是说,当你调用 CWnd::Create或CWnd::CreateEx 创建一个窗口时,MFC在 Windows 系统实际创建你的窗口前调用 CWnd::PreCreateWindow。
BOOL CWnd::CreateEx(...)
{
CREATESTRUCT cs;
...
// init cs
if (!PreCreateWindow(cs)) {
PostNcDestroy();
return FALSE;
}
...
// create the window
return TRUE;
}
但是对话框不是这样创建的。当你调用 CDialog::DoModal 时,对话框才被创建,在这种情况下 MFC 使用::CreateDlgIndirect 来加载你的对话框模板,它大致与 ::DialogBox 功能相同。不管调用哪个函数,Windows 系统都会在内部创建控件,CWnd::CreateEx 将不会被调用。因此你自己控件的 PreCreateWindow 也不会被调用。
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
- ››开发者或想使用的10个Android2.2新特性
更多精彩
赞助商链接