2008年2月9日 星期六
wxWidgets和MFC混合编程
wxWidgets的代码库中倒是有一个wx和MFC混合的例子(发布出来的2.6的代码包里面好像没有,2.8才有),它演示了如何在一个程序中分别有wx和MFC的窗口(分属于wxFrame和CFrameWnd类)。
但它没有解答的问题是:怎样将一个wx的控件放到MFC上面去,或者反过来。
在这个例子中,如果你想将wx的窗口作为应用程序开始时显示的窗口,就需要这个:
m_pMainWnd = new CDummyWindow((HWND) wxTheApp->GetTopWindow()->GetHWND()); 如果你了解MFC对窗口的封装,就知道它基本没有自己的东西,CWnd这些类基本上没有自己的数据成员,基本上都是调用Windows API(只是把那些API中的HWND参数给省略了。所以任何一个Windows桌面上的窗口,要体现为一个CWnd类对象是很容易的,只需要调用CWnd::FromHwnd()或者CWnd::Attach()就可以了,示例中的CDummyWindow就是这样做的。基于这样的思路,我们很容易把其它的wx控件通过CDummyWindow放到MFC控件中去。wxTreeCtrl * wxtree = new wxTreeCtrl(.....)
CDummyWindow *dummy = new CDummyWindow((HWND)wxtree->GetHWND());
dummy->SetParent(this);
我们需要其实不要CDummyWindow也没有问题,只要这样:
wxTreeCtrl * wxtree = new wxTreeCtrl(....)
::SetParent(HWND)wxtree->GetHWND(), m_hWnd);
但这里有另外一个问题: 创建一个wxWindow对象时是必须给出一个parent的,而这个parent又必
必须是wxWindow类型(除非为NULL)。
反过来要将MFC的东西放到wx上面就可以那么好运了,虽然也可以用上面这一招将MFC的控件显示出来,
但这些控件低于wx来说是透明的,你没法利用到wxSplitterWindow的分割功能,没法利用上各种layout manager/sizer。
在wxWidgets For MFC Programmers(from wxWidgets Wiki)中讲述了如何将一个CWnd转换为wxWindow对象:
wxWindow * win = new wxWindow();
win->SetHWND((WXHWND)hWnd);
win->AdoptAttributesFromHWND();
win->Reparent(wxGetApp().GetTopWindow());
2007年8月26日 星期日
Windows上几个免费反病毒工具
- Avast! 它的Home Edition是免费的,只需要用e-mail登记一下,就可以免费使用一年,到期后再重新登记就可以。功能很全,有文件监控、网络监控、邮件监控等,可自动升级。俺目前在用这个
- AVG Anti-Virus,它也提供了免费版本,另外还有AVG Anti-Spyware, AVG Anti-Rootkit这两个工具
- Avira AntiVir,大家俗称“小红伞”,其Personal Edition Classic是免费的,口碑也很不错
- Clam AntiVirus, 这个是完全GPL的,所以也有各种UNIX版本(不过似乎UNIX病毒比较少,不装问题也不大)。据说查杀病毒的能力相当强,不过没有实时监控能力。另外有一个完全针对Windows的变种ClamWin
2007年7月12日 星期四
采用Total Commander打开目录
机器上装了Google Desktop,对于找到的文件,它提供了一个"打开文件夹"的功能,但很不爽的是,它总用Explorer打开。忍受不下去了,我开始想在它在Total Commander中打开。
到Google Desktop的安装目录和它的注册表中看了一下,没什么可以配置的。
然后上Google Desktop网站,想找一个可以设置这个的插件什么的,也没有。
猜想它是调用ShellExecute来打开的,接着就试图修改注册表中"目录(Directory)"和"文件夹(Folder)"的关联: HKCR\Directory\shell\下并没有open动作, 我添加了并设置命令为C:\Totalcmd\totalcmd.exe /O "%1"之后,ShellExecute(...,"open", ...)没有什么变化,会返回5(ERROR_ACCESS_DENIED),恢复原来的就可以正常打开,奇怪; 修改HKCR\Folder\shell\open\command的值再试却没反应。
某天发现Directory Opus这个软件可以跟Windows系统集成,接管文件夹的打开操作,就安装了一个试用版本,发现它是这样的:
1. 先给HKCR\Directory\shell\下添加一个动作dopus(再下面command键值设置为dopus的命令行)
2. 将HKCR\Directory\shell的缺省值由none改为dopus,这样它的缺省动作就是dopus了
(对于Folder也同样设置。Folder是文件夹,包含Directory和其它一些不跟实际文件系统目录对应的)
俺照猫画虎,添加了一个wincmd动作,将Directory的缺省动作设置为wincmd,再试,搞定!
转成注册表操作就是如下:
[HKEY_CLASSES_ROOT\Directory\shell]
@="wincmd"
[HKEY_CLASSES_ROOT\Directory\shell\wincmd]
@="Open in Total Commander" [HKEY_CLASSES_ROOT\Directory\shell\wincmd\command] @="C:\\Totalcmd\\totalcmd.exe /O \"%1\""
补充说明:
1. 这只对ShellExecute时没有指定第二个参数(动作)时是可行的,而Google Desktop恰恰是这样,"运行"对话框也是。但如果它指定了动作是"open",那就只会走open动作了
2. HKCR\Folder\shell\command的值是REG_EXPAND_SZ格式而不是通常的REG_SZ(字符串)格式,奇怪
标签: total commander, windows
2006年11月17日 星期五
Joel: UNIX与Windows二元文化

买了一本《Joel谈软件》在看,里面有一篇《二元文化》讲到了Windows与UNIX在文化上的差别。
搜了一下,找到了原文Biculturalism 和繁体翻译《双元文化主义》。
这是篇老文章了,说UNIX倡导的是对其他程序员有用的输出,而Windows倡导的是让你的姨妈能够用软件做点事情。倒无所谓谁对谁好,只是出发点不一样。有一腚道理哈。
2006年11月2日 星期四
Total Commander 7.0 beta现身
Finally Total Commander 7 public beta is available!
Please report bugs here in the beta bugs forum, ONE BUG PER MESSAGE!
There is also a general discussions forum.
我比较喜欢的几个功能:
- Compare by content now allows to edit files, and to re-synchronize manually.
- 本来一般都用Beyond Compare或者WinMerge,但同步目录的时候会自动使用这个内置的比较器,所以能编辑真是太好了,不过作者说过TC7允许使用第三方工具的,不 知道实现了没有。
- Separate tree panel: Either one for both file panels, or one for each.
- 总算有个独立的树了。
- Exclude directories in "Show"-"Custom...", e.g. with *.* | .cvs.
- 这个功能俺想了很久了,尤其是在wine里面用的时候,HOME目录下一堆的.*文件很是扎眼(为什么wine不将它们解释成隐藏文件?)
- Alias commands for the command line for internal commands or external programs.
- 快捷键定义多了也记不住(而且大部分Ctrl+?快捷键已经用光了),所以在命令行上敲一个"//syncchangedir"或者 "//toggletree"也不错,呵呵
- Internal command selection dialog.
- 这条没有在帮助文件的What's New总列出,但这个版本对于TC的内部命令增强了不少,除了在配置工具条或者快捷键时按分类和关键字查找(比原来那个长长的下拉框强几百倍啊),还可在 命令行上直接使用cm_mkdir, cm_switchhidsys这些内部命令(如果怕记不住,也可以用cm_CommandBrowser打开上面说的这个对话框去找

标签: total commander, windows
2006年5月26日 星期五
Joel: UNIX与Windows二元文化

买了一本《Joel谈软件》在看,里面有一篇《二元文化》讲到了Windows与UNIX在文化上的差别。
搜了一下,找到了原文Biculturalism 和繁体翻译《双元文化主义》。
这是篇老文章了,说UNIX倡导的是对其他程序员有用的输出,而Windows倡导的是让你的姨妈能够用软件做点事情。倒无所谓谁对谁好,只是出发点不一样。有一腚道理哈。
2006年5月7日 星期日
用coLinux玩虚拟Linux
但因为原来比较熟悉VMWare,所以也没有去试这个coLinux。节前工作略有点闲,于是玩了一下这个Cooperative Linux。
1. 安装
安装比较简单。安装程序一步步走下来,再安装说明文件配置一下就可以了。
coLinux的运行有两种方式,一种是普通程序方式,另一种是服务方式,建议先用普通方式,系统基本配置完成后再安装为服务。
2. Linux系统
coLinux预备了几个磁盘镜像可供下载,可免去自己配置cofs等设备驱动的麻烦。俺用了Debian 3.0r0的那个,解压后是1G。
另外需要自己做一个swap device,如果有cygwin就比较简单:
dd if=/dev/zero of=swap bs=1024k count=512
然后修改一下配置文件里面的设置就可以了。
coLinux目前带的Debian磁盘镜像是3.0r0的,俺开始就想用apt直接升级为testing,没想到因为包依赖关系会造成严重问题,只得重来。这次先升级到最新的stable(3.1r2),然后在升级到testing。
3. 网络
用coLinux比较复杂的一步是配置网络,同VMWare一样,它也提供了NAT和Bridged两种方式,只是配置起来比较麻烦,关键是要搞明白自己的网络环境适合用那种方式。所以一定要看wiki上的配置说明。
我用的是NAT方式,采用TAP驱动(另一个选择是winpcap),倒也简单,在“网络邻居”里面将“真实”网络设备共享出来就可以了(在网络设置的“属性- 高级”里设置)。
4. 运行X程序
coLinux并没有象vmware那样也虚拟一个显卡设备出来,所以要运行X程序有两种方式,一种是其他地方的X server(比如cygwin的X或者Xming)来显示,另一种就是用vncserver。
考虑到虚拟世界还是有点慢,俺没有安装GNOME或KDE,只装了一个xfce4,浏览器用opera(还兼有邮件客户端)。
2006年3月20日 星期一
OpenQ的群补丁(附win32版本)
网友mars_engle再次给出了openq的补丁,修正了使用群的问题。
俺马上编译了win32版本,可从这里下载: http://bamanzi.inlsd.org/win32/openq
似 乎目前还不能自动读取群列表,也不能新加入群。打开群的方法是: 工具->帐户操作->QQ->Qun:Search a permanent Qun,然后输入在打开“房间列表”窗口中选择QQ帐号,点击"获取列表",输入群号,获取成功的话则会添加一个图标到主界面。
2006年2月11日 星期六
pythonwin debugger menu
于是拿出reshacker, 打开win32gui.pyd,将菜单资源修改了一下。
11128 MENU
POPUP "&Run"
{
MENUITEM "&Run...\tCtrl+R", 36864
}11130 MENU
POPUP "&Run"
{
MENUITEM "Chec&k\tCtrl+Shift+C", 36881
MENUITEM "&Run...\tCtrl+R", 36864
MENUITEM "&Import..\tCtrl+I", 36867
MENUITEM SEPARATOR
MENUITEM "&Go\tF5", 15022
MENUITEM "Step &in\tF11", 16013
MENUITEM "Step &out\tF10", 15020
MENUITEM "&Stop\tShift+F5", 16010
MENUITEM "Toggle Breakpoint\tF9", 16004
MENUITEM "Stop Debugging", 16010
MENUITEM SEPARATOR
MENUITEM "Watch List", 40002
MENUITEM "Stack View", 36888
MENUITEM "Breakpoint List", 36889
}
2006年1月26日 星期四
SmoothGNOME for Windows XP
呵呵。

世界變了
and clearlooks 2006年1月2日 星期一
闲话UI: 选择目录对话框

这用ShBrowserForFolder这个Windows API可以实现。
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(
LPBROWSEINFO lpbi
);
在Delphi中有下面这个函数可以使用:
function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload; (1)
但我更喜欢用这个(在一些简单的场合):
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload; (2)

但很多朋友不愿意,认为后面这个太难看。但在我看来,第一个对话框在可用性上是存在很大问题的:
* 不能设置(并展开到)缺省的选择
* 不能手工输入,这使得要进入一个层次深一点的目录非常麻烦
* 不能新建目录
其 实就ShBrowserForFolder这个API而言,第一个问题是很容易解决的,不过M$提供的是一种挺麻烦的方式: 你必须得编写回调函数(BrowseCallbackProc),在BFFM_INITIALIZED消息里面发送BFFM_SETSELECTION消 息。(我觉得Delphi在提供SelectDirectory(1)这个函数时就应该包装这个功能。)
对于第二个问题, 如果你的shell32.dll版本大于或等于4.71, 就可以有个手工输入路径的编辑框了, 只要在flags中包含BIF_EDITBOX;
对 于第三个问题, 如果你的shell32.dll版本大于或等于5.0, 就可以有个"新建文件夹"按钮了, 只要在flags中包含BIF_NEWDIALOGSTYLE (而且这个版本有其他一些特性: 对话框大小可调, 目录可拖动, 目录有context menu(这可以带来其他一些功能)。

BTW:
1. lazarus中有TSelectDirectoryDialog控件,功能上等于Delphi的SelectDirectory(1)函数加上设置缺省目录功能。
2. DFS套件(Torry.Net上的信息)里面有一个dfsBrowseDirectoryDlg控件,支持shell32 5.0的NewDialogStyle,对这个功能包装得比较完整(其实上面的第三个图用得就是这个控件),要添加新版本的特性(比如6.0的BIF_NOTRANSLATETARGETS等)也很容易。
2005年10月28日 星期五
xp? sawfish?

来自deviantART的winxp theme: Opus,至少可以让你的Windows XP的窗口边框小很多,节省不少空间(反正这之前我的xp都是设置为传统样式,而不用XP的缺省风格――我就不明白,M$新增了theme功能,怎么就不能提供一个好一点的缺省theme?)
2005年9月23日 星期五
Windows也可用gaim同时登录MSN, QQ和Gtalk

2005年6月22日 星期三
神奇的format.com!
有奖竞猜:
启动到DOS,执行format /q E:,会发生什么结果?
我不知道在别人那里是不是这样,反正在我的机器上是: 用dir可以看出,E盘被格式化了,但C盘也被格式化了。然后重启,发现原来E盘没有被格式化,C盘倒是确实被格式化了。
今天在公司重装机器时就这样被M$捅了一刀,C盘的东西都没有来得及备份,本来是想把E盘格了将C盘ghost过去的,结果... 试了MS-DOS 6.22和Norton 8.0的unformat,都无力回天,只好看着它们离我远去...
然 后format /?看见它说它的命令格式是format drive: [/Q]...还怀疑是应该将选项/q放在最后面才行,它没有在/q前看见盘符就以为是格式化C盘了(以M$软件一向羸弱的命令行支持,我相信这也是有可 能的)。没想到实验换过来还是不对,还是开始好像两个盘都被格式化了,重启后发现要格式化的盘完好,C盘确被搞定了。
我用的是Windows 98的启动盘里面的format.com。
标签: windows
2005年4月8日 星期五
Win2000如何设置应用程序兼容模式
TIM3(The Incredible Machine 3)好像是在windows 3.1时代写的,在win2000和winxp上都不能直接跑不起来(在win98上面倒是没有问题),但winxp上可以设置兼容模式,设置到 win95兼容模式就可以跑了。但win2000上怎么设置兼容模式呢?
在google上搜了一下,得到如下结果
1. 前提是必须有SP2以上的补丁
regsvr32 %systemroot%\apppatch\slayerui.dll
然后对要在兼容模式下运行的程序创建快捷方式,在快捷方式的属性中可以见到新的一页“兼容性”,选择一个即可
2. 在win2000的安装盘上有一个apcompat.exe,运行它,它可以允许你选择兼容模式,还有几个选项
不过都没用,这个游戏还是不能跑起来(Damned M$!),我只能玩TIM-Toon或者玩DOS版本的v1, v2了 :-(
链接:
Description of the Application Compatibility Tool
http://support.microsoft.com/?kbid=251062
How To Enable Application Compatibility-Mode Technology in Windows 2000 SP2 and SP3
http://support.microsoft.com/default.aspx?scid=kb;en-us;279792
Windows 2000 Compatibility Mode
http://www.windowsitpro.com/Windows/Article/ArticleID/43388/43388.html
How to Enable Application Compatibility-Mode Technology in Windows 2000 Service Pack 2
http://activewin.com/tips/win2000/1/2000_tips_43.shtml
2005年3月30日 星期三
foobar2k/winamp + cdplayer.ini
foobar2000:
http://www.digitalblues.org
http://www.hydrogenaudio.org
winamp:
http://www.url.ru/~copah
http://www.mpex.net/software
[@more@]
先后用过好多种CD播放软件,常常在里面输入CD和曲目的名称,但换个工具后又要重新输入,麻烦的紧。
解决这个问题的一个方法是采用支持CDDB的播放器,将曲目名称上载到一个服务器上。
但并不总是在线上,于是开始寻找一个可以交换数据的方式。
我还是比较喜欢win98下的CD播放器,它将数据保存在cdplayer.ini,文本文件,很直观的一种方式。
但win2000里面的CD播放器是另外一个样子,win98的cdplayer.exe拿过来又不能用。
所以后来我将一个用作Delphi示例的CD播放器修改了一下,添加了cdplayer.ini支持,
但其实现在更多地是在用foobar2000和winamp在播放音乐,所以想找相应的插件。
标签: windows
2005年3月15日 星期二
TaR_nircmd: nircmd -> TypeAndRun connector
标签: addons, total commander, windows
2005年3月13日 星期日
转: 如何优化WINDOWS XP操作系统?
- 关闭报告错误
- 关闭系统还原及休眠支持
- 删除Windows XP 中不需要的组件
- 如何提高Windows XP 的运行速度?
- 禁用Dr. Watson 调试程序
此案例仅供参考,(适合对系统比较了解,对系统要求比较高的用户可以参考。)
关闭报告错误
-------
点开始-〉运行-〉敲入msconfig-〉服务-
OK 了。以后再也没有程序因错误或兼容性不好被强行关闭后弹出的讨厌
关闭系统还原及休眠支持
---------------
虽然这两项功能也并非完全没有任何作用,但考虑到需要需要占用很
关闭;首先鼠标右健单击桌面上的"我的电脑",选择"属性"
System Restore on all drives"前打上勾就可以了。
休眠支持只需要通过控制面板-> 电源选项-> 休眠(Hibernate),把"Enable Hibernate"前面的勾去掉就可
以了,这样一来可以空出512MB 的硬盘空间。
删除Windows XP 中不需要的组件
---------------------
1)、删除系统文件备份,执行sfc.exe /purgecache
2)、删除驱动备份,删除WINDOWS(XP 安装目录)driver cachei386 目录下的Driver.cab 文件
3)、删除DLL 备份文件,目录为WINDOWS(XP 安装目录)system32dllcache,
4)、删除WINDOWS(XP 安装目录)ime 下不用的输入法
如何提高Windows XP 的运行速度?
-----------------------
Windows XP 虽然提供了一个非常好的界面外观,但是不可否认这样的设置也在极
的运行速度。如果你的机器运行起来速度不是很快,建议将所有的附
XP 的桌面恢复到Windows 2000 样式。设置的方法非常简单,在"我的电脑"上单击鼠标右键,选择
在"高级"选项卡中单击"性能"项中的"设置"按钮
一个对Windows XP 影响重大的硬件就是内存。使用256MB 内存运行Windows XP 会比较流畅,512MB 的
内存可以让系统运行得很好。
禁用Dr. Watson 调试程序
-----------------
在运行中输入"drwtsn32",然后把除了"(Dump All Thread Contexts)转储全部线程上下文"之外的全都
去掉,否则一旦有程序出错,硬盘会响很久,而且会占用很多硬盘空
标签: windows
2005年3月10日 星期四
QuickCHM这个工具还不错
如果原来发现这个,就不必编写python脚本来自己提取html的标题生成hhp/hhc了
做X Files和Friends剧本的CHM版本也方便多了。
Old posts:
How to convert Friends.doc into a CHM file
Create a CHM file for PyGTK2 Tutorial
2005年2月24日 星期四
xplorer2中x2tips的汉化方法
1. 先翻译x2tips.rtf(这个其实他已经做了)
2. 然后将翻译后的x2tips.rtf用文本编辑器打开,删除RTF头和每条tips之间多余的par,另存为x2tips.txt
(x2运行时读取的是这个文件)
3. 然后用reshacker等工具打开xplorer2.exe,在string table中可以找到一个rtf头
11260,
"{rtf1ansiansicpg1252deff0deflang2057{fonttbl{f0fmodernfprq6fcharset134
'cb'ce'cc'e5;}{f1fswissfprq2fcharset0
Verdana;}{f2fswissfprq2fcharset134
'cb'ce'cc'e5;}{f3fmodernfprq1fcharset0 Courier
New;}{f4fmodernfprq1fcharset134 'cb'ce'cc'e5;}{f5fnilfprq2fcharset134
'cb'ce'cc'e5;}}n{colortbl
;red0green0blue255;red255green0blue0;}nviewkind4uc1pardlang2052bf0fs26'c4'e3'd6'aa'b5'c0'c2'f0lang2057f1
...b0fs18parnparn"
x2运行时实际是从x2tips.txt中抽取一条,然后在前面添加这个rtf头,放到对话框中显示的
按RTF的要求,需要在这个头中声明后面文本需要用到的字体和颜色
一个简单的做法就是将前面翻译后x2tips.rtf的RTF头拷贝过来
"{rtf1ansiansicpg1252deff0deflang2057{fonttbl{f0fmodernfprq6fcharset134
'cb'ce'cc'e5;}{f1fswissfprq2fcharset0
Verdana;}{f2fswissfprq2fcharset134
'cb'ce'cc'e5;}{f3fmodernfprq1fcharset0 Courier
New;}{f4fmodernfprq1fcharset134 'cb'ce'cc'e5;}{f5fnilfprq2fcharset134
'cb'ce'cc'e5;}}n{colortbl
;red0green0blue255;red255green0blue0;}nviewkind4uc1pardlang2052bf0fs26'c4'e3'd6'aa'b5'c0'c2'f0lang2057f1
...b0fs18parnparn"
我这里将f0和f2字体改成了宋体('cb'ce'cc'e5)
Powered by ScribeFire.
标签: windows
2004年12月17日 星期五
html2rtf.pl的超级链接支持
line: 257 处添加如下代码:
# now href
urlobj_data1 = "{field{*fldinst {fs24insrsid13071880 hichaf1dbchaf13lochf1 hichaf1dbchaf13lochf1n HYPERLINK";
urlobj_data2 = "hichaf1dbchaf13lochf1 }{fs24insrsid13071880charrsid13071880 {*datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5a0000";
# urlobj_data3 is the URL(unicode) in hex code. e.g. http://www.zope.org/Members/Brian/PythonNet/
urlobj_data3 = "0068007400740070003a002f002f007700770077002e007a006f00700065002e006f00720067002f004d0065006d0062006500720073002f0042007200690061006e002f0050007900740068006f006e004e00650074002f";
urlobj_data4 = "000000}}}{fldrslt {cs15fs24ulcf2insrsid13071880charrsid13071880 hichaf1dbchaf13lochf1 ";
instream =~ s/]*>/urlobj_data1 "1" urlobj_data2&url_str2hex(1)urlobj_data4/ig;
instream =~ s//}}}/ig
其中url_str2hex的实现如下,随便放在什么地方
# input: http://
# output: 0068007400740070003a002f002f
sub url_str2hex {
local(s);
s = _[0];
out = "";
i=0;
while(i
ch = substr(s, i, 1);
#printf "%04xn", ord(ch);
out = out.sprintf("%04x", ord(ch));
i ++;
}
printf out;
return out;
}
html2rtf.pl的网址: http://fresh.t-systems-sfr.com/unix/src/www/.warix/html2rtf.pl.html
2004年10月4日 星期一
在win32下编译QQ-0.3 (with gaim-1.0.0)
源代码: gaim-1.0.0, openq-0.3-p3
头/库文件: gtk2, aspell, gtkspell, nspr, nss, perl58, tcl
如果要制作安装包还得需要NSIS
另外需要几个补丁
[@more@]
编译方法:
1.从http://sourceforge.net/projects/tcl下载并安装msys_mingw,这个包包含了一个简单的 POSIX环境和Mingw GCC (gaim的网页上说要下载安装Cygwin,这并没有必要; 而且上述包已经自带了mingw).;
2.安装msys_mingw, 并运行msys.bat,这将打开一个rxvt会话窗口。
3.从http://sourceforge.net/projects/gaim下载gaim-1.0.0的源代码,解压到msys的某个目录(假定为~/wingaim_building/)
cd ~/wingaim_building
tar jxf /path/to/gaim-1.0.0.tar.bz2
4.按照http://gaim.sourceforge.net/win32/build.php上面的说明,下载gtk2, aspell, gtkspell, nspr, nss, perl58, tcl的头文件和库文件,解压到wingaim_building/win32-dev/;
5.因为OpenQ使用了regex库,需要到http://sourceforge.net/projects/gnuwin32下载regex-0.12-bin.zip和regex-0.12-lib.zip,前者留着最后运行时使用,后者也解压到wingaim_building/win32-dev/;
6.在gaim-1.0.0源代码目录中补上OpenQ-0.3-p3的源代码 (这部分代码是我从OpenQ-0.3-p3 的完整源代码中提取出来的,对应gaim-0.79)
cd ~/wingaim_buiding/gaim-1.0.0
tar zxvf /path/to/openq-0.3-p3-src.tar.gz
7.对gaim-1.0.0的代码打补丁[补丁]。主要包含两类补丁,一类是对gaim- 1.0.0源代码针对openq的少量修改
cd ~/wingaim_buiding/gaim-1.0.0
patch-p1 -b <>
patch -p1 -b <>
patch -p1 -b <>
8.另一类是补丁是因为: OpenQ-0.3是在gaim-0.79上发布的,而gaim-1.0发布时修改了一些插件接口,所以要做相应更改
cd ~/wingaim_buiding/gaim-1.0.0
patch -p1 -b <>
9.开始编译
如 果你有ActivePerl-5.8,修改gaim- 1.0.0/plugins/perl/common/Makefile.mingw 中PERL和EXTUTILS两项使之指向perl安装的位置;如果你没有ActivePerl-5.8, 需要将gaim-1.0.0/plugins/Makefile.mingw中与PERL_PLUGIN_LOADER相关的行删除
cd ~/wingaim_buiding/gaim-1.0.0
make -f Makefile.mingw
10.安装
制作安装包
cd ~/wingaim_buiding/gaim-1.0.0
make -f Makefile.mingw install
然 后需要加上OpenQ的数据文件,即人头图标、笑脸图标和IP数据,这些包含在OpenQ-0.3的源代码包中。如果你下载了我在前面提供的 data.zip,可以直接解压到win32-install-dir中; 另外OpenQ需要regex.dll拷贝到win32-install-dir目录
如果需要perl插件,将perl58.dll也拷贝过去
-------------------------------------------------------------
目前还存在的问题: 一点击 "获取信息", gaim就崩溃(cygwin版本就没有这个问题)
相关信息整理在:
http://bamanzi.inlsd.org/gnuwin32/openq/README.html
另外也试了一下cygwin版本移植,比较简单。问题是在一个版本的gtk2上编译后在另外一个版本上运行就会出错,根本启动不了。不知道怎么回事,所以patch也没敢往主页上放。
标签: cygwin, im, mingw, windows
订阅 帖子 [Atom]