;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
Windows涓嬪疄鏃惰寮忔墦鍗扮郴缁熻璁 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VC >> 鎵撳嵃 >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

Windows涓嬪疄鏃惰寮忔墦鍗扮郴缁熻璁

鍙戝竷: 2008-6-26 12:38 |  浣滆: admin |   鏌ョ湅: 68娆

浼楁墍鍛ㄧ煡锛學indows绯荤粺鐨勯〉寮忔墦鍗扮郴缁熸湁璁稿濂界殑鐗规э紝姣斿鎵瑙佸嵆鎵寰椼佽澶囨棤鍏崇瓑绛夈備絾鏄紝鍦ㄤ竴浜涘疄鏃舵ц姹傚緢楂樼殑宸ヤ笟鎺у埗绯荤粺涓紝闇瑕佸皢绯荤粺闅忔満鍑虹幇鐨勪俊鎭疄鏃跺湴鎵撳嵃鍑烘潵锛岃姹傛潵涓琛屾墦涓琛岋紝鑰屼笉鑳芥潵涓琛屾墦涓椤碉紝鑰學indows绯荤粺鐨勯〉寮忔墦鍗扮郴缁熷嵈寰堥毦婊¤冻杩欐牱鐨勫簲鐢ㄩ渶姹傘傞壌浜庤繖涓師鍥狅紝涓轰簡婊¤冻瀹炴椂绯荤粺鐨勬墦鍗拌姹傦紝鏈夊繀瑕佽璁′竴涓柊鐨勫疄鏃惰寮忔墦鍗扮郴缁熴備笅闈㈣缁嗕粙缁嶅浣曞湪Windows 2000/NT涓婂疄鐜拌繖鏍蜂竴涓郴缁熴

鎬讳綋璁捐

瀹炴椂绯荤粺鐨勫熀鏈姹傛槸瀹炴椂鎬с傛湰鏂囬噰鐢ㄤ互鍏变韩鍐呭瓨涓轰腑杞殑鎵撳嵃鍋囪劚鏈烘妧鏈紝鎵鏈夌殑鎵撳嵃鎿嶄綔鍦ㄥ唴瀛樹腑鎻愪氦瀹屾垚锛屼繚璇佷簡搴旂敤绯荤粺瀵规墦鍗版搷浣滅殑鍙婃椂鍝嶅簲銆

鍙︿竴瑕佹眰鏄澶囨棤鍏虫э紝浣挎彁浜ゆ墦鍗扮殑鎿嶄綔灏藉彲鑳藉湴鍋氬埌涓庤澶囨棤鍏炽傜▼搴忎笉浼氬洜涓烘墦鍗版満璁惧鐨勪笉鍚岋紝瀵艰嚧绋嬪簭鏈夎緝澶х殑淇敼銆傚鏋滄墦鍗版満涓嶅悓锛屽彧闇鍔犺浇鐩稿簲鐨勬墦鍗伴┍鍔ㄧ▼搴忓嵆鍙

鎬讳綋涓婂疄鏃惰寮忔墦鍗扮郴缁熺殑璁捐鍒嗕负涓や釜閮ㄥ垎锛屼竴涓槸浠ュ唴瀛樹负鍩虹鐨勬墦鍗板亣鑴辨満閮ㄥ垎鐨勮璁★紱鍙︿竴涓槸瀹炴椂鎵撳嵃椹卞姩灞傞儴鍒嗙殑璁捐銆傜郴缁熺殑姒傝璁捐鍥惧涓嬶細

瀹炴椂琛屾墦鍗板亣鑴辨満閮ㄥ垎

杩欎釜閮ㄥ垎鐨勫熀鏈師鐞嗘槸浣跨敤涓涓熀浜庡叡浜唴瀛樻妧鏈殑鍏堝叆鍏堝嚭闃熷垪锛岀敤鏉ュ瓨鍌ㄥ叾浠栧簲鐢ㄧ▼搴忔彁浜ょ殑瀹炴椂鎵撳嵃璇锋眰銆傛墦鍗拌繘绋嬩粠鍏堝叆鍏堝嚭鐨勭幆褰㈤槦鍒楀彇鍑烘墦鍗拌姹,缁忚繃蹇呰鐨勫鐞嗕箣鍚庯紝鎻愪氦缁欐墦鍗伴┍鍔ㄩ儴鍒嗭紝鐢辨墦鍗伴┍鍔ㄩ儴鍒嗚礋璐i┍鍔ㄧ浉搴旂殑鎵撳嵃鏈鸿緭鍑恒

涓烘弧瓒冲叾浠栧簲鐢ㄧ▼搴忔彁浜ゆ墦鍗拌姹傜殑闇瑕侊紝鍦ㄦ浣跨敤浜哤indows鎿嶄綔绯荤粺鎻愪緵鐨勫叡浜唴瀛樻妧鏈傚叡浜唴瀛樻槸杩涚▼涔嬮棿閫氫俊鏃剁敤鐨勪竴绉嶆妧鏈紝鏄竴绉嶆洿涓烘爣鍑嗐佹洿涓烘牳蹇冪殑鎶鏈紝鑰屼笖瀹冨湪涓嶅悓鎿嶄綔绯荤粺骞冲彴涔嬮棿鐨勭Щ妞嶆т篃姣旇緝濂斤紙Unix绯诲垪鎿嶄綔绯荤粺涔熸湁杩欑鎶鏈級銆傚彟涓涓ソ澶勬槸鎻愰珮浜嗗疄鏃舵ц兘锛屽洜涓洪伩鍏嶄簡澶氭鍐呭瓨澶嶅埗鐨勭郴缁熺┖闂村拰鏃堕棿涓婄殑寮閿銆

Windows绯荤粺涓笌鍒涘缓鍏变韩鍐呭瓨鐩稿叧鐨勭郴缁熷嚱鏁版湁CreateFileMapping鍜孧apViewOfFile銆

绗竴涓嚱鏁扮敤鏉ュ湪绯荤粺涓垱寤轰竴鍧楀叡浜唴瀛橈紝骞惰繑鍥炲叡浜唴瀛樼殑鍙ユ焺銆傚叾鍙傛暟璇存槑濡備笅锛

HANDLE WINAPI CreateFileMapping (

HANDLE hFile,

LPSECUR99vY _ATTRIBUTES lpsa,

DWORD dwPROTECT,

DWORD dwMaxSizeHigh,

DWORD dwMaxSizeLow,

LPCSTR lpszMapName);

hFile涓烘枃浠跺彞鏌勶紝瑕佸垱寤哄叡浜唴瀛橈紝璇ュ弬鏁板繀椤讳负0xffffffff; lpsa涓哄畨鍏ㄥ睘鎬х粨鏋勬寚閽; dwPROTECT鏄〉淇濇姢鏍囪瘑锛屽PAGE_READONLY锛孭AGE_READWR99vE绛; dwMaxSizeHigh鍜宒wMaxSizeLow鍏卞悓瀹氫箟浜嗗叡浜唴瀛樼殑灏哄锛屽垎鍒负鍏变韩鍐呭瓨澶у皬鐨勯珮32浣嶅拰浣32浣; lpszMapName瀹氫箟浜嗗叡浜唴瀛樼殑鍚嶅瓧锛屽繀椤荤‘淇濆叾鍦ㄧ郴缁熻寖鍥村唴鐨勬儫涓鎬с

绗簩涓嚱鏁扮敤鏉ュ皢鍒涘缓鐨勫叡浜唴瀛樻槧灏勫埌璋冪敤杩涚▼鐨勫湴鍧绌洪棿锛屽苟杩斿洖璇ュ湴鍧绌洪棿鐨勯鍦板潃銆傚叾鍙傛暟璇存槑濡備笅锛

MapViewOfFile(

HANDLE hFileMappingObject,

DWORD dwDesiredAccess,

DWORD dwFileOffsetHigh,

DWORD dwFileOffsetLow,

DWORD dwNumberOfBytesToMap);

hFileMappingObject瀹氫箟浜咰reateFileMapping

鍑芥暟杩斿洖鐨勫叡浜唴瀛樺彞鏌; dwDesiredAccess瀹氫箟浜嗗叡浜唴瀛樼殑璁块棶妯″紡锛屽锛欶ILE_MAP_ALL_ACCESS

绛; dwFileOffsetHigh鍜宒wFileOffsetLow鍏卞悓瀹氫箟浜嗗叡浜唴瀛樿捣濮嬩綅缃殑鍋忕Щ閲忥紝鍒嗗埆涓鸿鍋忕Щ閲忕殑楂32浣嶅拰浣32浣嶏紝閫氬父鎯呭喌涓嬩簩鑰呴兘涓洪浂鍊; dwNumberOfBytesToMap瀹氫箟浜嗘槧灏勫埌鏈繘绋嬪湴鍧绌洪棿鐨勫叡浜唴瀛樼殑瀛楄妭鏁帮紝濡傛灉璇ュ间负闆讹紝鍒欐槧灏勬墍鏈夌殑鍏变韩鍐呭瓨銆

杩欓噷瀹氫箟瀹炴椂鎵撳嵃绯荤粺鎵鐢ㄥ叡浜唴瀛樼殑鍚嶅瓧涓篻_szRealTimePrintSystemShareMemName銆俁EALTIMEPRINT_DB鏄竴涓粨鏋勭被鍨嬶紝瀹氫箟浜嗗叡浜唴瀛樼殑鍐呴儴缁撴瀯锛屽畠鏄疄鏃舵墦鍗扮郴缁熺殑鏁版嵁鏍稿績锛屽寘鎷簡瑕佹墦鍗扮殑淇℃伅銆佸啓鍏ユ寚閽堛佽鍑烘寚閽堢瓑淇℃伅銆 鍏蜂綋姝ラ濡備笅(绀烘剰鎬т唬鐮):

REALTIMEPRINT_DB *g_pRealTimePrint-

SystemDb 锛

HANDLE hShareMemHandle = NULL锛

DWORD dwRTPSShmLen = sizeof(REALTIMEPRINT_DB);

//REALTIMEPRINT_DB 缁撴瀯鐨勯暱搴

hShareMemHandle =

//鐢熸垚鍏变韩鍐呭瓨锛屽苟杩斿洖鍏跺彞鏌

CreateFileMapping((HANDLE)0xffffffff,NULL,PAGE_READWR99vE,0,

dwRTPSShmLen, //鍏变韩鍐呭瓨鐨勫ぇ灏 鈥済_szRealTimePrintSystemShareMemName鈥);

g_pRealTimePrintSystemDb =

//灏嗗叡浜唴瀛樻槧灏勫埌鏈繘绋嬬殑鍦板潃绌洪棿

(REALTIMEPRINT_DB *)MapViewOfFile(hShareMemHandle锛孎ILE_MAP_ALL_ACCESS,0,0,0);

鍦ㄨ幏寰椾簡鍏变韩鍐呭瓨鐨勫湴鍧鍚庯紝浠讳綍璋冪敤杩涚▼閮藉彲浠ュ皢瑕佹墦鍗扮殑淇℃伅鍐欏埌璇ュ叡浜唴瀛樹腑锛屼緵鎵撳嵃鏈嶅姟杩涚▼鎵撳嵃杈撳嚭銆傚熀浜庣郴缁熷疄鏃舵у拰鏁堢巼鏂归潰鐨勮冭檻锛屼娇鐢ㄧ幆褰㈠厛鍏ュ厛鍑洪槦鍒楋紙FIFO锛夛紝鍦ㄦ涓嶅啀璇﹁堪銆

閫氬父鎯呭喌涓嬶紝灏嗕笂杩板姛鑳藉皝瑁呮垚涓や釜绫伙紝鐢熸垚鍔ㄦ佽繛鎺ュ簱渚涚▼搴忚皟鐢ㄣ備竴涓被鎻愪緵缁欓渶瑕佹彁浜ゆ墦鍗颁俊鎭姹傜殑搴旂敤绋嬪簭浣跨敤; 鍙︿竴涓被鎻愪緵缁欏搷搴旀墦鍗拌姹傜殑瀹炴椂鎵撳嵃鏈嶅姟杩涚▼浣跨敤銆傚湪绫讳腑灞忚斀浠ヤ笂绠楁硶缁嗚妭鍜屾暟鎹粏鑺傘

渚涙彁浜ゆ墦鍗颁俊鎭姹傜殑搴旂敤绋嬪簭璋冪敤鐨勭被鑷冲皯瑕佹彁渚涘涓嬫帴鍙f搷浣滐細

class RealTimePrintSystemClnt

{//鍏朵粬鐨勬暟鎹拰鏂规硶澹版槑

public:

BOOL IsWorking();

//鎵撳嵃鏈烘槸鍚︽鍦ㄥ伐浣滐紵

/*瀹炴椂鎵撳嵃绯荤粺鐨凢IFO闃熷垪鏄惁宸叉弧锛熷鏋滆繑鍥炰负TRUE锛岃〃绀哄疄鏃舵墦鍗扮郴缁熷凡缁忔病鏈夌┖闂插搷搴旂▼搴忕殑鎵撳嵃璇锋眰锛屽簲鐢ㄧ▼搴忚绛夊埌璇ヨ繑鍥炲间负FALSE鏃讹紝閲嶅彂鎵撳嵃璇锋眰銆*/

BOOL IsFull();

/*绋嬪簭璇锋眰瀹炴椂鎵撳嵃鎿嶄綔銆俻Data 琛ㄧず瑕佹墦鍗扮殑瀹炴椂淇℃伅锛岀敱ASCII瀛楃鎴栬呮眽瀛楀瓧绗︾粍鎴愮殑瀛楃涓层俤wDataLen 鏄鎵撳嵃鐨勫疄鏃朵俊鎭殑瀛楃闀垮害銆俢rColor 琛ㄧず浣跨敤浠涔堥鑹叉墦鍗帮紝濡傛灉浣跨敤褰╄壊鍠峰ⅷ鎵撳嵃鏈哄皢鍙互鎵撳嵃褰╄壊,榛樿鍊间负0锛岃〃绀洪粦鑹层俻PrinterName 琛ㄧず璇ユ墦鍗拌姹傚皢鍦ㄥ摢涓涓墦鍗版満涓婃墦鍗拌緭鍑猴紝榛樿鍊间负NULL锛岃〃绀哄疄鏃舵墦鍗扮郴缁熺殑榛樿鎵撳嵃鏈恒傝繑鍥炲兼槸瀹為檯鎻愪氦缁欏疄鏃舵墦鍗扮郴缁熺殑淇℃伅闀垮害锛岃鍊煎鏋滅瓑浜巇wDataLen 鍒欒〃绀鸿璇锋眰宸茬粡瀹屽叏鎻愪氦鎴愬姛锛屽鏋滅瓑浜庨浂鍊煎垯琛ㄧず璇ヨ姹傛病鏈夎瀹屾暣鎻愪氦锛屽簲鐢ㄧ▼搴忚鍐嶆鎻愪氦璇ヨ姹傘*/

DWORD Request(LPCSTR pData,DWORD dwDataLen,COLORREF crColor=0锛孡PCSTR pPrinterName=NULL);

//鍏朵粬鐨勬暟鎹拰鏂规硶澹版槑

};

渚涘搷搴旀墦鍗拌姹傜殑鏈嶅姟杩涚▼浣跨敤鐨勭被鑷冲皯瑕佹彁渚涘涓嬫搷浣:

class RealTimePrintSystemServ

{//鍏朵粬鐨勬暟鎹拰鏂规硶澹版槑

//UnionPrintSystem鏄墦鍗伴┍鍔ㄥ眰鐨勫皝瑁呯被锛屽疄鏃舵墦鍗扮郴缁熶娇鐢ㄥ畠鏉ユ墦鍗板疄鏃朵俊鎭

UnionPrintSystem *m_pUnionPrintSystem;

public:

/*鑾峰緱褰撳墠FIFO闃熷垪涓殑鎵撳嵃璇锋眰涓暟*/

DWORD GetRequstNum();

/*鑾峰緱涓涓墦鍗拌姹傜殑鏁版嵁锛宲Data寰楀埌鏁版嵁鐨勯鍦板潃锛宒wDataLen寰楀埌鏁版嵁鐨勯暱搴︼紝crColor 寰楀埌鎵撳嵃棰滆壊,pPrinterName 寰楀埌鎵ц璇锋眰鎵撳嵃鏈虹殑鍚嶅瓧銆傝繑鍥炲间负TRUE锛岃〃绀烘垚鍔燂紝涓篎ALSE琛ㄧず澶辫触銆*/

BOOL GetRequest(unsigned char ** pData,DWORD &dwDataLen,COLORREF &crColor锛孡PSTR pPrinterName);

/*瀹炴椂鎵撳嵃绯荤粺鐨勬墦鍗扮嚎绋嬨傚湪璇ユ墦鍗扮嚎绋嬩腑锛岃涓嶆柇妫娴嬫槸鍚︽湁鎵撳嵃璇锋眰锛屽鏋滄湁鎵撳嵃璇锋眰锛屽垯鍙栧嚭鎵撳嵃璇锋眰锛屾彁浜ょ粰鎵撳嵃椹卞姩灞傦紝鐒跺悗鐢辨墦鍗伴┍鍔ㄥ眰椹卞姩涓嶅悓鐨勬墦鍗版満灏嗚姹傚湪绾镐笂鎵撳嵃鍑烘潵銆傚叧浜庢墦鍗伴┍鍔ㄥ眰涓嬮潰璁茶堪銆*/

static DWORD WINAPI rtPrintThread(LPVOID lpParameter锛夛紱

};

鎵撳嵃椹卞姩閮ㄥ垎

涓轰簡瀹炵幇绯荤粺璁惧鏃犲叧鎬х殑瑕佹眰锛岃璁′簡鎵撳嵃缁熶竴椹卞姩灞傞儴鍒嗐傝繖鏍蜂竴鏃︽墦鍗版満璁惧鏇存敼锛屽簲鐢ㄧ▼搴忓彧闇鍔犺浇鏂扮殑鎵撳嵃鏈鸿澶囬┍鍔ㄥ嵆鍙紝涓嶄細瀵艰嚧鎵撳嵃鏈虹郴缁熺▼搴忓拰鐢ㄦ埛绋嬪簭鐨勪慨鏀癸紝浣跨郴缁熷叿鏈夎緝濂界殑绋冲畾鎬с佸吋瀹规у拰鍙墿鍏呮с

棣栧厛锛屽畾涔夌粺涓椹卞姩閮ㄥ垎锛岃閮ㄥ垎涓昏瀹屾垚浠ヤ笅鍔熻兘锛氬姞杞界浉搴旂殑鍏蜂綋鎵撳嵃鏈洪┍鍔ㄧ▼搴忥紝骞惰礋璐e皢璇锋眰鎵撳嵃鐨勫瓧绗︿俊鎭炕璇戞垚涓嶅悓鎵撳嵃鏈洪渶瑕佺殑鎵撳嵃鐐归樀淇℃伅銆

class UnionPrintSystem

{public:

GeneralPrinter *m_pPrinter锛

//褰撳墠浣跨敤鐨勬墦鍗版満

GeneralPrinter *m_pDefaultPrinter锛

//绯荤粺榛樿鐨勬墦鍗版満

GeneralPrinter *m_pPrinterSet[MAX_PRINTER_DRV_NUM];

//瀹夎鐨勬墍鏈夋墦鍗版満

HZDotArrayFont *m_pHzDAF锛

//姹夊瓧瀛楃鐨勬墦鍗扮偣闃典俊鎭彁鍙栧櫒锛屽彲浠ユ彁鍙栧绉嶆墦鍗板瓧浣撶殑鐐归樀淇℃伅,濡24鐐归樀妤蜂綋锛48鐐归樀瀹嬩綋绛

public:

//鍔犺浇涓涓墦鍗版満椹卞姩绋嬪簭

void LoadPrinterDriver(GeneralPrinter *p);

//鍔犺浇涓涓幏鍙栨眽瀛楁墦鍗扮偣闃典俊鎭殑椹卞姩鍣

void LoadHzDAFDriver(HZDotArrayFont *p); //閫夋嫨涓涓伐浣滄墦鍗版満

void SelectWorkPrinter(char *szPrinterName); //鎵撳嵃鏈烘帶鍒

void SetColor(int id) {m_pPrinter->SetColor(id);};

//鍏朵粬鎵撳嵃鏈烘帶鍒跺嚱鏁

/*鎵撳嵃涓涓瓧绗︿覆锛屽彲浠ュ寘鎷眽瀛楀瓧绗︼紝鍙璋冪敤璇ュ嚱鏁板氨鍙互灏嗕俊鎭墦鍗板嚭鏉*/

int PrintString(char *str,int len,char * ColorName=鈥滈粦鑹测);

};

鏈鍚庢槸鎵撳嵃鏈洪┍鍔ㄧ▼搴忕殑璁捐锛岃繖閲屾槸璁惧鏃犲叧鎬ц璁$殑鍏抽敭鎵鍦ㄣ備负婊¤冻绯荤粺璁惧鏃犲叧鎬х殑瑕佹眰锛岃璁′簡涓涓寘鍚悇绉嶅熀鏈墦鍗板姩浣滅殑鎵撳嵃鏈哄熀绫伙紝鎵鏈夌殑鎵撳嵃鏈洪兘浠庤鍩虹被娲剧敓鍑烘潵銆傚湪鎵撳嵃鏈虹殑鍩虹被涓畾涔変簡鎵撳嵃鏈虹殑鍚勭鎺у埗浠g爜銆佹墦鍗版満鐨勭绉嶆搷浣滄柟娉曪紝鍦ㄥ叿浣撶殑鎵撳嵃鏈虹被涓皢瀹冧滑瀹炰緥鍖栥備唬鐮佸涓嬶細

class GeneralPrinter

{public :

/*PRINTCOLOR鏄簨鍏堝畾涔夊ソ鐨勬墦鍗版満棰滆壊缁撴瀯锛岀敤鏉ュ畾涔夋墦鍗版満姣忎竴绉嶉鑹茬殑鎺у埗浠g爜*/

PRINTCOLOR *m_pColor锛

/*鏈墦鍗版満鏀寔棰滆壊鐨勬暟閲*/

int m_iPrtColorNum;

/*鎵撳嵃鏈烘槸鍚︽敮鎸佹眽瀛楃殑鐩存帴鎵撳嵃锛屽嵆璇ユ墦鍗版満鏈韩鏄惁甯︽湁姹夊瓧鐨勬墦鍗板瓧搴擄紝濡傛灉鎵撳嵃鏈轰笉鏀寔姹夊瓧鐨勭洿鎺ユ墦鍗帮紝姹夊瓧鐨勬墦鍗扮偣闃典俊鎭皢鐢卞瓧搴撶偣闃典俊鎭彁鍙栧櫒绫昏礋璐h幏鍙栥*/

BOOL m_bDirectPrintHz锛

/*HPRINTHANDLE 鏄湰绯荤粺浜嬪厛瀹氫箟濂界殑鎵撳嵃鏈哄彞鏌勭粨鏋勶紝鐢ㄦ潵鏍囪瘑鎵撳嵃鏈虹殑纭欢绔彛锛屾槸鏁版嵁杈撳嚭鍒版墦鍗版満鐨勯氶亾銆*/

PRINTHANDLE m_hPrinter锛

char m_szPrinterName[PRINTR_PORTNAME_MAX_LEN];

/*鎵撳嵃鏈哄悕瀛楋紝鐢ㄦ潵鍖哄埆鎵撳嵃鏈虹殑鎯熶竴鏍囧織*/

PRINTERCONTROLCODE ...;

/*PRINTERCONTROLCODE 鏄湰绯荤粺浜嬪厛瀹氫箟濂界殑鎵撳嵃鏈烘帶鍒朵唬鐮佺粨鏋勶紝鐢ㄦ潵鎺у埗鎵撳嵃鏈鸿涓猴紝濡傛墦鍗版満鍒濆鍖栨帶鍒朵唬鐮侊紝鎵撳嵃鏈鸿缃〉闀挎帶鍒朵唬鐮佺瓑鎵撳嵃鏈烘敮鎸佺殑鏂规硶銆*/

public:

/*szPort鏄墦鍗版満鎵鎺ョ鍙g殑绔彛鍚嶅瓧锛屽鈥榗om1鈥欙紝鈥/dev/bbp0鈥欑瓑*/

GeneralPrinter(char *szPort);

锝濭eneralPrinter锛堬級锛

virtual void ResetPrinter();

/*鎵撳嵃鏈哄垵濮嬪寲鐨勬柟娉*/

virtual void SetAutoCRLF(int iAuto); /*璁剧疆鎵撳嵃鏈烘槸鍚﹁嚜鍔ㄦ崲琛岀殑鏂规硶锛宨Auto涓1琛ㄧず鑷姩鎹㈣锛屼负0鍒欎笉鑷姩鎹㈣*/

/*濡傛灉鏄僵鑹叉墦鍗版満鐨勮瘽锛屼笅闈袱涓嚱鏁扮敤鏉ヨ缃瓧绗︾殑鎵撳嵃棰滆壊锛宻zColorName鏄鑹茬殑鍚嶅瓧锛屽鈥滈粦鑹测濓紝鈥滅孩鑹测濈瓑锛屼絾蹇呴』鏄墦鍗版満鏀寔鐨勯鑹层俰ColorId 棰滆壊鐨処d鍊间竴鑸负0锝7涔嬮棿鐨勫笺*/

virtual void SetColor(char *szColorName)锛

virtual void SetColor(int iColorId);

/*灏嗘墦鍗版満璁剧疆涓哄浘褰㈡ā寮忎笅鐨勬搷浣滐紝iMode 琛ㄧず涓嶅悓鐨勫浘褰㈡ā寮忥紝濡180脳180绛*/

virtual void SetGraphMode(int iMode);

/*鐢ㄦ潵鎵撳嵃瀛楃涓诧紙鍖呮嫭姹夊瓧瀛楃锛夌殑鏂规硶锛宨StrLen 琛ㄧず瀛楃涓查暱搴*/

virtual int PrintString(char * szStr,int iStrLen);

/*鐢ㄦ潵鎵撳嵃鍥惧舰鐨勭偣闃典俊鎭紝pData瀛樻斁鍥惧舰鐨勭偣闃典俊鎭紝姣斿姹夊瓧鐨勬墦鍗扮偣闃电瓑*/

virtual int PrintGraphDotArray(char * pData,int iDataLen);

/*鍏朵粬鏂规硶鐨勫0鏄*/

};

椹卞姩绋嬪簭鐨勭紪鍐欏疄渚

瑕佸疄鐜版湰绯荤粺鐨勬墦鍗伴┍鍔紝蹇呴』閬靛畧鏈郴缁熺殑瑙勮寖锛屽氨鏄柊鐨勬墦鍗版満椹卞姩蹇呴』浠庡熀绫籊eneralPrinter娲剧敓鍑烘潵锛岀劧鍚庡啀灏嗗悇绉嶆暟鎹疄渚嬪寲锛岃繖鏍锋墠鑳戒繚璇佽澶囩殑鏃犲叧鎬с備笅闈互浣宠兘鐨凚JC5500褰╄壊鍠峰ⅷ鎵撳嵃鏈轰负渚嬭鏄庨┍鍔ㄧ▼搴忕殑缂栧啓鏂规硶銆

class Printer_BJC5500 : public GeneralPrinter {

public:

PRINTCOLOR m_AllColor[BJC5500_PRT_

COLOR_NUM];

public:

Printer_BJC5500 (char *szPort);

~Printer_BJC5500 ();

virtual int PrintGraphDotArray(char * pData,int iDataLen);

};

//鍙渶瑕佸湪鏋勯犲嚱鏁颁腑灏嗗悇绉嶆暟鎹疄渚嬪寲鍗冲彲

Printer_BJC5500 锛氾細Printer_BJC5500 (char *szPort){

strcpy(szPrinterName,鈥淏JC5500鈥濓級锛

//璧嬩簣璇ユ墦鍗版満鐨勬儫涓鏍囧織鍚嶅瓧

m_iPrtColorNum = 7锛

//BJC5500鑳藉鏀寔7绉嶉鑹

m_pColor = &m_AllColor[0];

//鑾峰緱BJC5500鎵撳嵃鏈洪鑹叉帶鍒朵唬鐮佺殑棣栧湴鍧

m_bDirectPrintHz=FALSE锛

//BJC5500涓嶅甫姹夊瓧鐨勭‖瀛楀簱锛屽洜鑰屼笉鏀寔姹夊瓧鐨勭洿鎺ユ墦鍗帮紝闇瑕佹彁鍙栨眽瀛楃殑鎵撳嵃鐐归樀淇℃伅锛岀劧鍚庡湪鎵撳嵃鏈虹殑鍥惧舰妯″紡涓嬭繘琛屾眽瀛楃殑鎵撳嵃

int i=0锛

int cslen = 6锛

//榛戦鑹茬殑鎵撳嵃鎺у埗浠g爜

m_AllColor[i].szColorName =鈥滈粦鑹测濓紱

//棰滆壊鐨勫悕瀛

m_AllColor[i].iControlStrLen =cslen;

//鎵撳嵃鎺у埗浠g爜鐨勯暱搴

m_AllColor[i].szControlStr =鈥淺x1b\x5b\x4d\x01\x00\x30鈥濓紱

//鎵撳嵃鎺у埗浠g爜

i++;

//鍏朵粬鐨勯鑹叉帶鍒朵唬鐮佸拰鍏朵粬鎵撳嵃鏈鸿涓虹殑鎺у埗浠g爜

m_pResetPrintStream.cs=鈥淺x1b\x43\x1\x1b\x41\x1鈥;

//鍒濆鍖栨墦鍗版満鐨勬帶鍒朵唬鐮

m_pResetPrintStream.len=6;

//璁剧疆鍥惧舰妯″紡绛夊叾浠栧姛鑳界殑鎵撳嵃鏈烘帶鍒朵唬鐮

}

濡傛灉璇ユ墦鍗版満鐨勬煇浜涙墦鍗拌涓烘瘮杈冪壒娈婏紝鍦ㄦ鍙渶瑕侀噸杞界浉搴旂殑铏氬嚱鏁帮紝姣斿BJC5500鐨勬墦鍗板浘褰㈢殑鐐归樀淇℃伅姣旇緝鐗规畩锛屽湪姝ら噸杞戒簡PrintGraphDotArray,闄愪簬绡囧箙锛屼笉鍐嶇粰鍑哄叾瀹炵幇銆

閫氳繃浠ヤ笂浠g爜锛屽彲浠ュ畬鎴愭墦鍗版満椹卞姩绋嬪簭锛屽悓鏃跺張淇濊瘉浜嗙▼搴忔帴鍙g殑涓鑷达紝瀹炵幇浜嗗疄鏃舵墦鍗版搷浣滅殑璁惧鏃犲叧鎬с

鍔犲叆鏂扮殑鎵撳嵃椹卞姩绋嬪簭

鍦ㄧ郴缁熺殑鎵撳嵃缁熶竴椹卞姩灞傞儴鍒嗭紝鏈変竴涓笌璇ラ儴鍒嗙浉鍏崇殑閰嶇疆鏂囦欢PrinterDrive.ini,褰撳畨瑁呬竴涓墦鍗伴┍鍔ㄦ椂锛屽皢浼氬鍔犱竴涓淧rinter*Cfg鈥濊缃」锛屸*鈥濊〃绀1锛2鈥︹︾浉鍏宠缃」濡備笅锛

[SystemCfg]

DefalutPrinter=Canon_Bjc5500

锛涚己鐪佹墦鍗版満

[Printer1Cfg]

Name=Canon_Bjc5500

DriveFile=c:\RealPrt\Drive\Bjc5500.dll

锛涙墦鍗版満鐨勮澶囬┍鍔ㄧ▼搴

[Printer2Cfg]

;鍏朵粬鎵撳嵃椹卞姩鐨勮缃

鎵撳嵃缁熶竴椹卞姩灞傚皢璇诲彇璇ラ厤缃苟鍒嗘瀽鍐呭锛岀劧鍚庝娇鐢↙oadLibray鍜孏etProcAddress鍔ㄦ佸垱寤鸿鎵撳嵃椹卞姩寮曟搸锛堝嵆涓涓寚鍚慓eneralPrinter 鐨勭被鎸囬拡锛夛紝鍔犺浇瀹夎鐨勯┍鍔ㄧ▼搴忋

閮ㄥ垎浠g爜濡備笅锛堝叾涓璯_pUnionPrintSystemEng鏄墦鍗扮粺涓椹卞姩寮曟搸鐨勬寚閽堬級锛

typedef void* (*GetGeneralPrinterenginer_Func)(void);

GeneralPrinter *pPrtEng;

GetGeneralPrinterenginer_Func pFunc;

hHandle=LoadLibrary(鈥渃:\RealPrt\Drive\Bjc5500.dll鈥);

if(hHandle ) {

pFunc=(GetGeneralPrinterenginer_Func )GetProcAddress(hHandle,鈥淕etGeneralPrinterEnginer鈥);

if(pFunc)

V pPrtEng =(GeneralPrinter *)(*pFunc)();

if(pPrtEng)

g_pUnionPrintSystemEng->LoadPrinterDriver(pPrtEng);

/*鍦ㄦ灏嗘墦鍗伴┍鍔ㄧ▼搴忚鍏ョ郴缁熶腑*/

}

閫氳繃杩欑鏂规硶锛屾垜浠彲浠ュ皢鏂扮殑鎵撳嵃椹卞姩瑁呭叆瀹炴椂鎵撳嵃绯荤粺锛屽疄鐜拌澶囨棤鍏虫с

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆