27 四月, 2007
WB, MFC: 如何改变Web Browser Control的UI
改动IE的Web Browser控件UI,包括自定义或者禁止右键菜单,禁止控件border的3D特性,如何处理鼠标双击事件等等。
通过实现IDocHostUIHandler接口实现。
- 禁止或者自定义菜单:IDocHostUIHandler::ShowContextMenu
- 去除控件border的3D属性:IDocHostUIHandler::GetHostInfo,设置flag为DOCHOSTUIFLAG_NO3DBORDER
- 去除控件窗口的滚动条:IDocHostUIHandler::GetHostInfo,设置flag为DOCHOSTUIFLAG_SCROLL_NO
在IDocHostUIHandler设置前的文档窗口属性(可以被GetHostInfo改变的那部分)不会变化。所以,如果是在DWebBrowserEvents2::DocumentComplete事件内通过ICustomDoc接口设置IDocHostUIHandler的,那么当前窗口的Border和Scroll等属性的设置需要等待下一次Navigation完毕才能生效。有效期一直维持到控件释放或者下一次显式设置。
trick: 在控件显示前,Navigate "about:blank"页面,同时设置IDocHostUIHandler
至于通过重载PreTranslateMessage的方法实现禁止右键菜单的方法(参考:IE的WebBrowser control是一个窗口类,disable right mouse click -context menu-, accelerator keys),限制太多,特别是当此控件被Hosting两次后,连PreTranslateMessage方法也会被屏蔽。
一个简单的例子:Disabling TCppWebBrowser's context menu or "right-click" menu. - by Borland Developer Support Staff
26 四月, 2007
Firefox吃内存,IE的webbrowser控件bug
- Firefox太吃内存,特别是打开包含较多大图片文件的网页时,譬如松松最近发布的:苏州博物馆新馆,上海展览中心
- 微软的webbrowser control是IE的核心,如果你采用CWnd::ShowWindow(SW_HIDE)方式隐藏此控件,会导致整个控件被释放。参考:BUG: WebBrowser Control Destroyed When Hidden, 我的IE是6.0 sp2,已经打了最新的patch,依然有这个问题,可见bug尚未被fix。
23 四月, 2007
DIP: 反转片效果
做自动的反转片效果比较难,因为使用固定的参数只能适合少数照片。我使用的方法是:
- 自动色阶调整,提高原图质量
- Unsharp mask做轻度锐化(.5,.5,2)
- 适当调整亮度(-3)和对比度(+10)
- 大幅提高色彩饱和度(+30)
效果示意,原图:

应用反转效果后:

23 四月, 2007
DIP: 负片冲印(反转负冲)效果
参考pchome上的负片冲印效果PS方法,依次在VC++6.0内实现。
步骤:
- 红色通道“颜色加深”,绿色通道“反相,正片叠底,不透明度30%”,蓝色通道“反相,正片叠底,不透明度50%”
- 分别对三个通道进行色阶调整
- 合并通道,调整亮度和对比度
- 调整色彩明亮度和饱和度
效果示例,原图:

应用反转负冲效果后:

参考:
20 四月, 2007
VC6: 半透明窗口
win2000以后,有新方法SetLayeredWindowAttributes,可以实现此目的。使用SetLayeredWindowAttributes,会影响到整个窗口,包括标题栏以及窗口内的所有控件。这是真正意义上的“半透明窗口”。
如果只是想实现“半透明窗口背景”效果的对话框,可以在首次绘制窗口之前保存被窗口覆盖的那部分的屏幕位图(从显示设备环境CDC对象COPY),然后采用AlphaBlend方法生成半透明效果,再绘制到窗口上。
AlphaBlend API需要msimg32.dll,这个动态库不支持win95/NT。如果想要支持95/NT,可以自己写一个AlphaBlend,毕竟,半透明位图的AC_SRC_OVER 算法相当简单。
20 四月, 2007
ActiveX: 如何获取IE浏览器的客户区屏幕坐标
- 首先要获取顶层浏览器窗口的接口,参考:"Retrieve the Top-Level IWebBrowser2 Interface from an ActiveX Control"
- 注意,IWebBrowser2的ClientToWindow方法,传入参数并非某点坐标,而是客户区的Size。返回的结果是在给定客户区Size的前提下,整个Browser的大小,包含标题栏,工具条,菜单,状态栏等,也包含整个客户区四周的Margin。所以无法通过这个方法取得客户端的left-top坐标
- 取得IHTMLDocument2接口:IWebBrowser2::get_document
- IHTMLWindow2接口:IHTMLDocument2::get_parentWindow
- 取得IHTMLWindow3接口:IHTMLWindow2::QueryInterface(IID_IHTMLWindow3)。注:window对象的所有方法,是通过IHTMLWindow2、IHTMLWindow3、IHTMLWindow4、IHTMLWindow5这4个接口共同实现的。
- 通过IHTMLWindow3接口,取得window.screenLeft和window.screenTop的值。这两个值就是浏览器客户区left-top点相对于屏幕的坐标
- 通过IHTMLDocument2::get_body,获取document.body对象的offsetLeft, offsetTop, offsetWidth, offsetHeight值
- 现在,我们终于可以得到浏览器客户区的屏幕坐标了
17 四月, 2007
几个数据:
- 我国卫生总费用只覆盖20%人口的卫生服务
- 1998年全国卫生服务调查显示,我国87.4%的农民完全是自费医疗,37%的患病农民应就诊而未就诊,65%的患病农民应住院而未住院;至1989年,我国农业合作医疗覆盖率下降到只有4.8%,直到1995年也只恢复到15%
- 2000年,WHO进行成员国卫生筹资和分配公平性的排序中,中国位列191个成员国的倒数第四(188位)
- 2003年,卫生部第三次国家卫生服务调查,患病群众48.9%应就诊而未就诊,29.6%应住院而未住院,44.8%城镇人口和79.1%的农村人口无任何医疗保障,城镇职工参加基本医疗保险的约1.3亿人,享受公费医疗人数为5000万人
- 中国政府投入的医疗费用中,80%是为了850万以党政干部为主的群体服务的(中科院调查报告);另据监察部、人事部披露,全国党政部门有200万名各级干部长期请病假,其中有40万名干部长期占据了干部病房、干部招待所、度假村,一年开支约为500亿元
- 1978至2001年,卫生总费用从110.2亿元上升为5150.3亿元,平均年增长12.2%,同期GDP平均增长9.42%
- 政府投入只占公立医院收入的8%左右,大医院只占1%至3%。公立医院要通过病人付费拿到医务人员工资的50%至90%,导致医院增加临床服务量,而提供的预防和基本服务不足
- 我国人口占世界总人口的22%,而卫生总费用仅占世界卫生总费用的2%;政府投入不足,财政投入占医院当年支出的比重,省级以上医院在5%,市县医院一般在1%,乡镇卫生院在1%至5%之间
- 2003年,中国医疗总费用6600亿元,政府只负担17%。而欧共体为80%至90%,美国为45.6%(老人、穷人、残疾人全免费),泰国为56%。众多发展中国家如印度、古巴、朝鲜、苏丹、缅甸等实行全民免费医疗
- 2/3以上的中国人口要靠自己支付医疗费用,占卫生总支出的56%。2004年12月第三次全国卫生服务调查显示,我国医疗服务成为居民第三大消费
以药养医,医患矛盾,这些都是表面现象,医改的失败,政府要负主要责任。医疗卫生体制和运行机制不变,医疗改革只是空话。
1986年,各级政府财政卫生拨款122.23亿元,占当年卫生总费用315亿元的38.69%;2003年,中国卫生总费用6584.10亿元,按照1986年的比例,政府财政拨款应该是2547.38亿元,实际上却是1116.94亿元,卫生部门为政府节省了1430.44亿元。“卫生部门的钱从何处来?就是‘不能给钱给政策’,从病人那里收来的。人均卫生费用110元,占当年人均卫生费用509.50元的21.61%。看病哪能不贵?
杜乐勋这样描述“不能给钱给政策”的执行过程:财政部门说,卫生部门不就是缺200亿元吗?我给你政策,你多收200亿元不就够用了吗?卫生部门不服,我要得到200亿元的纯收入,就必须多收1000亿元。正是有关部门“给政策”,卫生部门多收了1430亿元。结果是,既增加了医药产业的销售额,增加了医疗器械产业的销售额,财政部门200亿元又不用给了,皆大欢喜。
好一个皆大欢喜。
6 四月, 2007
Q5在游泳,旁边的漂亮姐姐是骨头同学的女儿
都匀摆忙乡旧堡寨的千年古杏
戴着海豚牌儿童太阳镜在家里骚包
6 四月, 2007
谨以此图献给jiyu&abo
实在忍不住啊。。。
贵州省黔南苗族布依族自治州三都水族自治县“烂土”乡







