Posts in UI

Handle NewWindow3 and ShowModalDialog in CHtmlView

CHTMLView does not support NewWindow3 as of MFC 9.0. It is relatively easy to add this support, given the event sink code in atlmfcsrcviewhtml.cpp

Add the following into the declaration of the derived CHtmlView class (named CHtmlViewTestView in this example)

Read more ...


PRB: ::SetUIHandler Causes Changes in Save As Dialog

For the description of this problem, see http://support.microsoft.com/kb/330441.

A workaround is delegating DHTML commands to the origional webbrowser object through its IOleCommandTarget interface. A sample can be found at http://www.codeproject.com/atl/popupblocker.asp:

Read more ...


何时一个类的指针可以强制转化为另外一个类的指针,即使它们之间没有派生关系?

问:我看到CListView的成员函数GetListCtrl直接把CListView本身的指针转换为CListCtrl指针。我想知道在什么情况下可以安全地把一个类的指针转化为另一个类的指针?

答:只要你访问的数据的内存表示是完全相同的,那么这种转化就是安全的。

Read more ...


How To Detect If an Application Has Stopped Responding

简介:本文描述了如何使用C++、VB、Windows API和.Net类库判断一个进程是否停止了响应。

没有一个明确的“停止响应”的定义,例如对于Internet Explorer或者Word 2000这样的多顶层窗口应用程序,可能存在部分顶层窗口失去响应的情况,这时很难定义应用程序是否停止了响应。但是一般来说,很多应用程序只有一个标志性窗口(或者叫主窗口)。如果主窗口在一段时间内不响应用户操作的时候,对于用户来说应用程序是停止响应的(例如在Internet Explorer等待远程FTP服务器返回登录结果时)。尽管这经常属于其他应用程序应该妥善考虑的范畴,但是如果自己的应用程序依赖于这样的程序而没有源代码级控制权,那么应该提供一个机会允许用户中断对外部应用程序的等待或者干脆终止外部应用程序。

Read more ...


偶的CSDN收藏夹(大部分都是古董……)

无界面的HTML分析器·分析网页中的表格/ http://community.csdn.net/Expert/topicview.asp?id=351580

如何载入非标准大小的图标并显示/ http://community.csdn.net/Expert/topicview.asp?id=638695

Read more ...


如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性

111222的CSDN文档中心文章 用 MSHTML 的一点经验(https://web.archive.org/web/20051126180205/http://dev.csdn.net/develop/article/10/10456.shtm) 说明了如何访问在HTML文档对象模型中的网页的元素、内容。但是,有时候开发者实际上需要访问的是网页中ActiveX控件的属性、方法和事件。例如,你在网页载入之后需要修改/获取MediaPlayer的媒体源,以及控制MediaPlayer的播放。

为获得ActiveX控件的接口,我们需要访问文档对象模型。获得文档接口的方法多种多样,比如CHtmlView::GetHtmlDocument,IWebBrowser2::get_Document,IHTMLWindow2::get_document等等,参见111222的文档。这里我直接用一个函数GetDHtmlDocument表示获得这个接口的函数。你可以自己实现这个函数。

Read more ...


在应用程序中集成浏览器控件(Update)(Subjet to change without notice)

浏览器控件是一个提供浏览器绝大部分功能的ActiveX控件,随Microsoft? Internet Explorer 4.0(IE)或者更高版本发行。实际上,IE可以认为是一个集成浏览器控件的程序。

怎么给用户提供丰富的内容一直是程序员们努力的目标。尽管各种各样的界面库可能使你眼花缭乱,但是这些也是美工和程序员的恶梦——要自定义界面上的每个元素的外观并不是一件容易的事情,而且有时候需要比较复杂的技术,例如自定义程序中出现的滚动条的颜色。

Read more ...


饮鸩止渴

CSDN的社区是免费的,做点广告本来是无可厚非;但是做到一个帖子上面两个大Flash加左边一大堆图片广告,开了五个帖子就把我的K7 700HZ 512M RAM搞死机就有点过头了……要是不禁用Flash很少人能上CSDN的话,广告还有什么效果?不是每个人都有P4的(顺便说一下,开了五个页面之后浏览器进程在偶刚买的P4本本上CPU占用率也没下过95%……开一个帖子在偶的K7上面也一样……)

在这里抱怨一下,希望尽快把那两个广告换成GIF什么的,不然偶不得不写个CSDN浏览器出来在浏览的时候砍掉所有图片和控件……

Read more ...


对话框数据交换 (Update)

通常,简单的对话框不使用结构来存储成员数据。但是大量的简单类型的成员交换会使得代码繁琐。这时候可以使用结构来封装简单类型的数据,声明一个赋值操作符和修改DDX调用来简化数据交换代码。

例如在文档或者视图的命令处理函数中

Read more ...


对话框数据交换

Read more ...


数据绑定 TreeView 的演示应用程序

一个基于WinForms的自绘示例。

https://web.archive.org/web/20020808201431/http://msdn.microsoft.com/library/en-us/dnwinforms/html/custcntrlsamp4.asp

Read more ...


基于非模态对话框的MFC工程

Read more ...


在浏览器中粘贴时替换剪贴板数据

在某些时候,可能需要覆盖剪贴板的数据,例如过滤聊天时在输入窗口粘贴非文字格式的信息。对于浏览器控件的编辑模式,浏览器提供了IDocHostUIHandler接口来支持粘贴时提供一个替代的数据源来覆盖剪贴板的数据。下面的代码描述了如何过滤除了CF_TEXT之外的剪贴板格式

Read more ...


结合ADO、ADOX和MFC的文档/视图/框架架构创建和打开Access数据库

本文描述了如何在MFC的文档/视图/框架架构中使用ADO和ADOX来创建和打开数据库。

在阅读本文之前,建议先对COM,数据库和MFC的文档/视图/框架有一个基本的了解。推荐阅读下列文章

Read more ...


使用IE5内建的进度对话框

本来想自己写一个的,但是发现codeproject上面已经有了(https://web.archive.org/web/20000604080517/http://www.codeproject.com/miscctrl/iprogressdialog.asp)

下面是微软知识库里面的一个示例

Read more ...


CDHtmlDialog&NewWindow2

Class ID Default Interface Default Event Interface —————– —————– ———————– CLSID_WebBrowser IWebBrowser2 DWebBrowserEvents2 CLSID_WebBrowser_V1 IWebBrowser DWebBrowserEvets

CDHtmlDialog捕获了DWebBrowserEvets事件,并将其转发到虚函数,而没有捕获DWebBrowserEvents2;所以在按Ctrl+N触发DWebBrowserEvents2事件的时候,执行默认操作——打开新的IE窗口。这可能不是你预料之中的行为。

Read more ...


在浏览器控件中启用自动完成功能

自动完成功能在浏览器控件中默认是禁用的(但是没有任何文档提到这一点……),但是可以通过实现IDocHostUIHandler,在GetHostInfo方法中在填充DOCHOSTUIINFO结构的dwFlags成员时设置DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE标识位来启用。

关于如何实现IDocHostUIHandler,可以参考 https://web.archive.org/web/20030218020128/http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp ,示例工程在https://github.com/jiangsheng/Samples/tree/master/IEAutomation

Read more ...


问题:Internet Explorer中的控件在可见之前没有被创建

Q195188 PRB: ActiveX Control Window Is Not Created Until Visible in Internet Explorer 使用知识库里面的方法

在Windows XP中,可以在任务栏上看到控件的窗口,很是不雅观

Read more ...


浏览器程序中添加宏支持

这个教程提供在浏览器程序中添加宏支持的方法,你会看到如何给MFC的程序添加宏支持。这篇文章也讨论了如何扩展VC6中的CHtmlView的功能,如何实现MDI结构的浏览器,以及如何分析DHTML的文档结构。

单击 jiangsheng/Samples 下载本文的代码

Read more ...


写篇文章真累

最近一篇文章(浏览器集成教学–在浏览器程序中添加宏支持)长长短短,写了两个礼拜吧。

写这篇文章的主要原因是想把网页分析做得更加灵活。这篇文章的基础是我以前为一个EBS游戏写的外挂,可以自动修改网页内容(主要是表单)和定时submit表单(有的网站的submit有时间限制)。

Read more ...


ActiveX控件访问所在网页的DHTML文档对象模型(MFC)

Read more ...


在对话框中使用网页输入数据

此对话框使用了IE5附带的DHTMLEdit控件。

Read more ...


使用目录内容建立菜单

目的:根据目录内容,建立一个菜单。菜单项为目录中的文件和子目录(以弹出方式显示)。

解决方案:遍历子目录,建立一个文件路径数组。菜单项的ID是数组的索引。当用户单击某个菜单项时,从数组中读取文件路径并执行相应的操作。

Read more ...