需求
实现 Edit 控件文字透明,在 XP 下有 Bug,得做特殊处理,所以要判断当前系统是不是 XP,蛋似,要考虑到“兼容性”:如果系统是 Vista、Win7、8、9、10,则他们都有兼容 XP 的模式,GetVersion/GetVersionEx 都会被欺骗。
解决
这种情况需要的是:VerifyVersionInfo
参考
http://msdn.microsoft.com/en-us/library/ms725492(v=vs.85).aspx
实现 Edit 控件文字透明,在 XP 下有 Bug,得做特殊处理,所以要判断当前系统是不是 XP,蛋似,要考虑到“兼容性”:如果系统是 Vista、Win7、8、9、10,则他们都有兼容 XP 的模式,GetVersion/GetVersionEx 都会被欺骗。
这种情况需要的是:VerifyVersionInfo
http://msdn.microsoft.com/en-us/library/ms725492(v=vs.85).aspx
XP 系统,程序使用了 Manifest 指定使用 Microsoft.Windows.Common-Controls
现象:Edit 控件处理 WM_CTLCOLOREDIT 改变颜色,问题出在 SetBkMode 设置透明后,控件删除字符时无法立刻刷新,即会残留。
自残,别用 Microsoft.Windows.Common-Controls,删除类似下列的代码:
1 |
放弃“透明”,采用“伪透明”——如果您的背景是纯色,用 SetBkColor 就行。
检测到 XP 时,WM_CTLCOLOREDIT 返回画刷前,自己用 FillRect/Rectangle 涂一下……或者发一个 WM_ERASEBKGND,当然这个做法的前提是 WM_ERASEBKGND 的处理就是自己涂一下,如果就一句 return TRUE 那是等于啥也没干。
《#诗盗#·挨踢威》:十年河西今河东,弱经烽火死无踪。未来岂是挨踢威?骚年摇头撸爱轰。
由霹雳角色“南冕.超轶主”的诗号获得灵感而作。
由来泉石潜蛟龙,
不经烽火不现踪。
风云岂是苍天主?
拈作轩冕上九重。
挨踢威(iTV)势在必行了,产品可以做好,看好,蛋似利润肯定不如手机平板,出货量也不可能。没有跨时代意义。
《#诗盗#·世界末日》:骚年不肯琵碧玺,今日碧非昨日碧。恍若昙花开一瞬,世界末日明日至。劝君须惜骚年碧,劝君莫要再搞基。末日未日快去日,日完记得洗机机。
改编自唐朝诗人杜秋娘的古诗作品《金缕衣》。
劝君莫惜金缕衣,劝君惜取少年时。
花开堪折直须折,莫待无花空折枝。
《#诗盗#·碉堡的机机》:身长长机机,一机装二逼。云端通讯录,网络三四G。
改编自霹雳角色“御天荒神六铢衣”出场诗。
身披六铢衣,
御宇藏真理。
云中封神路,
紫薇降天启!
身长长机机:身上长着很长的机机。
一机装二逼:一个机机就可以装两个逼,不管是装牛逼还是撒逼,简直易如反掌,果然是装逼利器!
云端通讯录:现在的智能手机都可以把通讯录备份到云端。
网络三四G:支持 3G、4G,各种制式。
今天发生一个莫名其妙的问题,导致浪费一个早上的时间排查问题。
测试 LSP 期间,已经反注册它,netsh winsock reset 加重启好几次……依然有程序加载它,用 Process Explorer 查了一下是:IpOverUsbSvc.exe 和 daemonu.exe,后来把 LSP 文件删掉,再重启,这时候当然无法加载了,可是 UMU 又想重现一下这个莫名其妙的问题,结果一个早上没了,无法重现……
15:38 2012/12/25 补充
今天这个现象又出现了。再手动重启这两个服务后,不再加载 LSP 了。它们对应的服务名是:IpOverUsbSvc 和 nvUpdatusService。这说明这两个服务很可能每次重启机器时都没有正常关闭,系统提供了某种机制让他们在下一次重启后快速恢复了运行现场(保留了有 LSP 注册时的环境)。
《#诗盗#·白衣沽酒醉花颜》:百代繁华一朝残,千秋明月吹角寒。风云天骄皆过客,醉卧花丛是悠然。
改编自霹雳角色“白衣沽酒绮罗生”的诗号。
百代繁华一朝都,谁非过客;
千秋明月吹角寒,花是主人。
死因:在官方 ROM 上 刷不了 Tomato,试着刷了 DD-WRT 后,再刷 Tomato,结果刷完 213 了……
TTL 线拯救,网络是强大的,关键字:WR941N 短路 C278 电容
本文只为发几张图,如果有人不幸和 UMU 一样壮烈地撸死了这款路由器,可以参考之。
两个困境:
有个只有 RJ45 接口的旧设备要上网,它的位置离路由器很远,家里的网线不够长……
UMU 买了一个支持 AP Client 的无线路由器(TP-Link TL-WR800N)每次把这个 AP Client 断电时,提供网络的主路由器都会被这个 AP Client 搞死掉,原因未知……
还没有树莓派的时候,UMU 用笔记本上的 Windows 的 ICS 功能给它提供网络,当然这方法很不好,于是有了现在的方案。
仔细查看了树莓派支持的 USB WiFi Adapters 列表,挑选了 TP-LINK TL-WN823N(RT8192CU 芯片),这个在 Raspbian 上是 Work out-of-box。Mercury 150Mbps MW150U(Realtek RTL8188CU 芯片)也可以。
硬件准备好后,第一步,配置 Wifi,连上主路由器,假定,此步将 wlan0 的 IP 配置为 192.168.1.2,/etc/network/interfaces
的内容如下:
1 | auto lo |
192.168.24.51 这个 IP 可以改为别的,UMU 习惯用这个当网关地址。/etc/wpa_supplicant/wpa_supplicant.conf
的内容这里就忽略了,参考 http://elinux.org/RPi_Peripherals#Wireless:_TP-Link_TL-WN722N_USB_wireless_adapter_.28Debian_6.29。设置完,ifdown wlan0
再 ifup wlan0
,看看 USB 无线网卡的指示灯应该闪起来了……
第二步,配置 RJ45 网口的 NAT。首先,修改 /etc/sysctl.conf
,增加以下两行:
1 | net.ipv4.ip_forward=1 |
运行 echo 1 > /proc/sys/net/ipv4/ip_forward
和 iptables -t nat -A POSTROUTING -s 192.168.24.0/24 -o wlan0 -j SNAT --to 192.168.1.2
,并将这条命令写到 /etc/rc.local
中的 exit
前。
最后,reboot
一下试试。可以用网线把 PC 和树莓派连起来,PC 的网卡设为 24 段地址,网关 192.168.24.51,试一下 PC 通过树莓派的网口上网吧!
为什么转?因为 JXR 格式在同等质量的情况下,存储空间比 JPEG 节约了 45-50%。
之前在《从 Windows 8 新功能推理某产品的八哥》提到过现在手机上的省流量 App,其原理就是压缩图片,但为了提高效果,这个压缩基本都是有损的,流量减少了,但是图片质量下降了,有的下降可以忍受,有的则令人发指!比如,长微博,文字转图片,这种图片线条分明,相邻像素值对比可能很大(黑白分明),这类图片采用高压缩比的 JPEG 压缩后,图片质量往往很差。
再举个例子:QR 码图片,您可以做一下试验,为了说明 JPEG 不适合存储线条型图片,哥采用一张蛋疼的 1290*1290 像素的 QR 码图片,保存为 JPEG 大小是 4.76MB,但保存为 PNG 格式时只有 52.4KB,请注意单位,前者是后者大小的将近 100 倍!!
大家可能比较少关注 WP,也许您没听过 DataSense,简单地说,它就是微软做的节省流量的 App。号称可以节约 45% 的流量,这么大的压缩率,除了优化 HTML 相关的文本之外,对图片的压缩肯定是必须的!推测 DataSense 可能使用了 JPEG XR 格式来转化其他格式的图片。
JPEG XR 虽然已经成为一种标准,但目前依然只有微软支持,所以,如果您想把这个技术应用到 iOS、Android 的节省流量 App 中,那很抱歉,此路暂时还不通。
根据实测,IE9@PC、IE10@PC、IE10@WP8 都是支持 JXR 格式的。下面是用 C++/CLI 写的很简单的一个格式转化程序:
1 | using namespace System; |
文末是一些搜索到的关于 JPEG XR 的资料,可供参考:
http://jpeg.org/newsrel26.html
JPEG XR (ISO/IEC 29199-2) is now an International Standard and also an ITU-T Recommendation (T.832).
JPEG XR(旧称 HD Photo 及 Windows Media Photo)是一种连续色调静止图像压缩算法和文件格式,由Microsoft开发,属于Windows Media家族的一部分。它支持有损数据压缩以及无损数据压缩,并且是微软的XPS文档的首选图像格式。目前支持的软件包括.NET Framework(3.0 or newer),Windows Vista/Windows 7、Internet Explorer 9,Flashplayer 11等。
JPEG XR(微软HD Photo格式)2009 年,成为 ITU-T 推荐的国际标准(ISO/IEC 29199-2)。JPEG XR 的标准化确保数码相机、打印机、显示器和软件公司能够在开发其新产品的时候兼容互通。其核心技术由微软核心媒体开发团队开发完成,针对当前和将来的数字图像发展需求以提供了许多新的优势和特点。
在 Vista 操作系统中已经支持了这种新的文件格式,JPEG XR 相比其它技术更有优势,其中包括更好的压缩技术,以一半的文件大小保存与 JPEG 相同质量的图像,或以相同大小的文件保存质量相当于 JPEG 两倍的图像。JPEG 组织还对微软开放与 JPEG XR 相关的专利的决策表示了赞扬,称微软免许可费政策将有助于JPEG推动 JPEG XR 普及,有助于确保它能够被更多的用户所采用。JPEG 组织还鼓励其它公司向微软学习。