1. 五筆反查工具
先放幾張圖,再來分享做這東西時遇到的難點。
2. 字根圖
一共有6763張字根圖,如果直接發布,顯然不美觀。因此有必要打包下,再發布。可惜的是,在網上沒找到合適的打包工具(如果知道,還請告訴偶一下》_
記錄檔案偏移用以下這個類表示:
struct fileindex ;假如我將1.gif,2.gif打包到0.zero這個檔案中,那麼0.zero的檔案結構應該是這樣的
(2) (fileindex) (fileindex) (content of 1.gif) (content of 2.gif)
上面的2表示一共有兩個檔案或者兩個fileindex,第乙個fileindex就是第1.gif的資訊,第二個fileindex是2.gif的資訊,接著的是1.gif和2.gif的內容
具體的打包**如下:
//打好包,要取出來也很簡單:先讀出全部的fileindex,再根據檔名查詢到相應的fileindex,最後根據偏移值和檔案大小就能將原來的內容讀出來了。將strsrcdirectory目錄下的全部檔案打包到strdestfile中
bool cfilepack::makepack(const std::string& strsrcdirectory, const std::string& strdestfile)
dword dwsize = arfilelist.size();
fwrite(&dwsize, 1, 4, fp); //
寫入一共有幾個檔案
fileindex* pfilelist = new fileindex[arfilelist.size()];
fwrite(pfilelist, 1, arfilelist.size() * sizeof(fileindex), fp); //
先預留一塊地方儲存檔案偏移資訊
//按順序打包檔案
for (int i = 0; i < arfilelist.size(); ++i)
dword fsize = filelength(fileno(fbuf));
pfilelist[i].dwsize = fsize;
pfilelist[i].dwoffset = ftell(fp);
char* buf = new
char[fsize];
fread(buf, 1, fsize, fbuf);
fclose(fbuf);
fwrite(buf, 1, fsize, fp);
delete buf;}//
將檔案的偏移資訊寫到之前預留的地方
fseek(fp, 4, seek_set);
fwrite(pfilelist, 1, arfilelist.size() * sizeof(fileindex), fp);
fclose(fp);
delete pfilelist;
return true;
}
3. 顯示gif
字根圖全是gif格式的,mfc自帶的picture控制項不支援gif格式,所以。。。不幸中的萬幸,第三方顯示支援很容易就能找到。經過一番比較後,最後選擇的是pictureex。原因是pictureex很小,只有乙個標頭檔案和乙個cpp檔案。此外,使用也很方便:呼叫load(路徑),再呼叫draw()就能將圖顯示出來了。不過前面已經將全部打包成乙個檔案了,難道使用時還要將內容讀出來,再寫到xx.gif上嗎?回答這個問題前,先來看下load有哪些過載形式吧
//loads a picture from a file
load(_t("mypic.gif"));
bool load(lpctstr szfilename);
//loads a picture from a global memory block (allocated by globalalloc)
//warning: this function does not free the global memory, pointed to by hglobal
bool load(hglobal hglobal, dword dwsize);
//loads a picture from a program resource
load(makeintresource(idr_mypic),_t("giftype"));
bool load(lpctstr szresourcename,lpctstr szresourcetype);
//4. 資源顯示filename指定的
void cwubifangcha_zerodlg::display86zigen(cstring filename)
lpvoid pvdata = globallock(hglobal);
if( pvdata == null )
memcpy(pvdata, buf, ifilesize);
globalunlock(hglobal);
m_86zigen.load(hglobal, ifilesize); //
讀內容 m_86zigen.draw(); //
顯示delete buf;
::globalfree(hglobal);
}filename.releasebuffer();
}
a. pictureex
b. 五筆反查_零式 v1.0
c. mfc42d.dll的介紹
2011.12.25下午更新
感謝lcs-帥提出的無法執行問題。缺少的mfc42d.dll是debug版才需要的dll,現在改成了release版本,並用了靜態編譯。
98五筆86五筆及五筆字體口訣字根表
五筆字根口訣 86版 a區 11 g 王旁青頭戔 兼 五一,12 f 土士二幹十寸雨。二一還有革字底 13 d 大犬三羊古石廠,羊有直斜套去大 14 s 木丁西,15 a 工戈草頭右框七。b區 21 h 目具上止卜虎皮,22 j 日早兩豎與蟲依。23 k 口與川,字根稀,24 l 田甲方框四車力。2...
fedora 安裝五筆
非常簡單 因為fedora 12 現在的輸入法使用的是ibus,使用yum 來看一下ibus的包。root localhost yum list grep ibus 找到了很多,其中有乙個 ibus table wubi.noarch 這個就是我們要的了。root localhost yum ins...
五筆碼表 86
a區 11 g 王旁青頭戔 兼 五一,12 f 土士二幹十寸雨。二一還有革字底 13 d 大犬三羊古石廠,羊有直斜套去大 14 s 木丁西,15 a 工戈草頭右框七。b區 21 h 目具上止卜虎皮,22 j 日早兩豎與蟲依。23 k 口與川,字根稀,24 l 田甲方框四車力。25 m 山由貝,下框幾...