Visual C++6.0ÊÇ¿ª·¢WindowsÓ¦ÓóÌÐòµÄÇ¿´ó¹¤¾ß£¬µ«ÊÇҪͨ¹ýËüʵÏÖ³ÌÐòµÄ´òÓ¡¹¦ÄÜ£¬Ò»Ö±ÊdzõѧÕßµÄÒ»¸öÄѵ㣬¾³£ÓÐÅóÓÑѯÎÊÈçºÎÔÚVCÖÐʵÏÖ´òÓ¡¹¦ÄÜ£¬ËûÃÇÍùÍù¸Ðµ½ÔÚMFCÌṩµÄ¿ò¼ÜÄÚʵÏÖÕâ¸öÎÊÌâºÜ¸´ÔÓ£¬²»ÖªµÀÈçºÎÏÂÊÖ¡£±¾ÀýÕë¶ÔÕâ¸öÎÊÌ⣬½éÉÜÒ»ÖÖ¼òµ¥µÄ·½·¨ÊµÏÖÎÄ×Ö´®µÄ´òÓ¡¹¦ÄÜ,¶ÁÕßÅóÓÑ¿ÉÒÔÔÚ´Ë»ù´¡ÉÏÉÔ΢¸Ä¶¯Ò»Ï£¬¾Í¿ÉÒÔʵÏÖÎļþ¡¢Í¼ÏñµÄ´òÓ¡¹¦ÄÜ¡£
¡¡¡¡Ò»¡¢ÊµÏÖ·½·¨
¡¡¡¡ÔÚWindows²Ù×÷ϵͳÏ£¬ÏÔʾÆ÷¡¢´òÓ¡»úºÍ»æͼÒǶ¼±»ÊÓΪÊä³öÉ豸£¬Õý³£Çé¿öÏ£¬ÏµÍ³Ä¬ÈϵÄÊä³öÉ豸ÊÇÏÔʾÆ÷¡£ÒªÊ¹ÓôòÓ¡»ú,Ê×ÏÈÐèÒª´´½¨Ò»¸öÖ¸Ïò´òÓ¡»úµÄÉ豸»·¾³¾ä±ú,È»ºóͨ¹ý¸Ã¾ä±úµ÷ÓÃÏà¹ØµÄ»æͼº¯Êý°ÑËùÐèµÄÎÄ×ÖºÍͼÐÎÊä³öÖÁ´òÓ¡»úÉÏ¡£µ±´òÓ¡½áÊøºó,ɾ³ýÕâ¸öÉ豸»·¾³¾ä±ú¼´¿É¡£
¡¡¡¡µ±WindowsϵͳÖа²×°ºÃ´òÓ¡»úºó£¬ÏµÍ³×ÜÊÇ×Ô¶¯ÉèÖÃÒ»¸ö´òÓ¡»úΪϵͳµÄĬÈÏ´òÓ¡»ú,ÔÚWindowsµÄÆô¶¯ÅäÖÃÎļþWin.iniÖеÄ[window]¶ÎÖÐÁгöÁË´øÓйؼü×ÖdeviceµÄĬÈÏ´òÓ¡»ú¡£ÏÂÃæÊÇijһ»úÆ÷ÖÐWin.iniÖеÄ[Windows]×ֶεÄÄÚÈÝ:
[windows]
load=
run=
NullPort=None
device=HP LaserJet 4050(computer000),HPBFDB1,LPT1
¡¡¡¡ÔÚÉÏÊö¹Ø¼ü×ÖdeviceºóµÄ×Ö·û´®ÖУ¬°üº¬ÁËϵͳÖÐĬÈÏ´òÓ¡»úµÄÈý¸öÖØÒªÊôÐÔ£¬ËüÃÇÒÀ´ÎÊÇ´òÓ¡»úµÄÉ豸ÃûHP LaserJet 4050(computer000)£¬Çý¶¯³ÌÐòÃûÊÇHPBFDB1£¬Êä³ö¶Ë¿ÚΪLPT1¡£
¡¡¡¡ÎªÁ˲Ù×ÝϵͳĬÈϵĴòÓ¡»ú£¬ÊµÏÖ³ÌÐòµÄ´òÓ¡¹¦ÄÜ£¬ÔÚ³ÌÐòÖпɵ÷ÓÃAPIº¯ÊýGetProfileString£¨£©´ÓWin.iniÎļþÖлñµÃ deviceÕâ¸öÉ豸×Ö·û´®£¬¸Ãº¯ÊýµÄÔÐÍΪ£ºDWORD GetProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize)¡£º¯ÊýÖÐlpAppName²ÎÊýΪËùÒª¼ìË÷µÄWin.iniÎļþÖеÄ×Ö¶ÎÃû£»lpKeyNameΪ×Ö¶ÎÖеĹؼü×ÖÃû£»lpDefaultΪĬÈϵÄ×Ö·û´®£»lpReturnedStringΪ¼ìË÷µ½µÄ×Ö·û´®£¬Èç¹û¸Ãº¯ÊýûÓдÓlpKeyName¹Ø¼ü×ÖÖмìË÷µ½ÏàÓ¦µÄ×Ö·û´®£¬Ôò kpRetrunedString·µ»ØĬÈÏ×Ö·û´®lpDefault£»nSizeΪ·µ»Ø×Ö·û´®µÄ³¤¶È¡£
¡¡¡¡»ñÈ¡ÉÏÊö×Ö·û´®ºó£¬ÔÙʹÓà strtok£¨£©º¯Êý½«¸Ã×Ö·û´®½øÐзֽâ,»ñµÃÓë´òÓ¡»úÏà¹ØµÄÈý¸öÊôÐÔ,×÷ΪAPIº¯ÊýCreateDC£¨£©´´½¨´òÓ¡»úÉ豸»·¾³¾ä±úµÄ²ÎÊý£¬ CreateDC£¨£©º¯ÊýÈç¹ûµ÷Óóɹ¦,ÔòΪĬÈÏ´òÓ¡»ú´´½¨Ò»¸öÉ豸»·¾³¾ä±ú,·ñÔò·µ»ØÒ»¸ö¿ÕÖµ(NULL)¡£¸Ãº¯ÊýµÄÔÐÎΪ£ºHDC CreateDC(LPCTSTR lpszDriver,LPCTSTR lpszDevice,LPCTSTR lpszOutput,CONST DEVMODE *lpinitData)¡£¸Ãº¯ÊýµÄÇ°Èý¸ö²ÎÊýÇ¡ºÃ¶ÔÓ¦´òÓ¡»úµÄÈý¸öÊôÐÔ£¬×îºóÒ»¸ö²ÎÊýΪ³õʼ»¯´òÓ¡»úÇý¶¯³ÌÐòµÄÊý¾Ý£¬Ò»°ãÇé¿öϸòÎÊýÉèÖÃΪNULL¾Í¿ÉÒÔÁË¡£
¡¡¡¡ÔÚ¾ßÌå´òÓ¡µÄ¹ý³ÌÖУ¬µ÷ÓÃint StartDoc( HDC hdc, CONST DOCINFO *lpdi )º¯ÊýÀ´¿ªÊ¼Ò»¸ö´òÓ¡ÈÎÎñ£¬ÆäÖвÎÊýlpdiΪһ¸öÖ¸ÏòDOCINFO½á¹¹µÄÖ¸Õ룬¸Ã½á¹¹ÈçÏ£º
typedef struct {
¡¡int cbSize; //½á¹¹µÄ³ß´ç´óС£»
¡¡LPCTSTR lpszDocName; //ÎĵµµÄÃû×Ö£»
¡¡LPCTSTR lpszOutput; //Êä³öÎĵµÃû£¬Ò»°ãÇé¿öÏÂΪNULL£»
¡¡LPCTSTR lpszDatatype;//ÓÃÀ´¼Ç¼´òÓ¡¹ý³ÌµÄÊý¾ÝÀàÐÍ£¬Ò»°ãÇé¿öÏÂΪNULL£»
¡¡DWORD fwType; //ÓÃÀ´Ö§³Ö´òÓ¡¹¤×÷µÄ¶îÍâÐÅÏ¢£¬Ò»°ãÇé¿öÏÂΪNULL£»
} DOCINFO, *LPDOCINFO;
¿ªÊ¼Ò»¸ö´òÓ¡ÈÎÎñºó£¬ÔÙµ÷ÓÃStartPage(hdcprint)º¯ÊýÈôòÓ¡»ú×ßÖ½£¬Í¨Öª´òÓ¡»úÓÐÎĵµ½«Òª´òÓ¡£»½ÓÏÂÀ´µÄ¹¤×÷¾ÍÊÇÊä³öÊý¾ÝÁË£¬Õⲿ·Ö¹¤×÷¶ÔÓÚ¿ª·¢ÈËÔ±À´Ëµ¾ÍÏóÍù¼ÆËã»úÆÁÄ»ÉÏÊä³öÎÄ×Ö¡¢Í¼ÏñÒ»ÑùÈÝÒ×£¬Ö»²»¹ýÊǼÆËã»ú¸ù¾Ýµ±Ç°µÄÉ豸»·¾³¾ä±ú×Ô¶¯½«Êý¾ÝÊä³öµ½´òÓ¡»ú°ÕÁË¡£Êý¾Ý´òÓ¡Íêºó£¬ÐèÒª×÷һЩÉƺó´¦Àí¹¤×÷£¬Ê¹ÓÃRestoreDC(hdcprint,-1)º¯Êý»Ö¸´´òÓ¡»úÉ豸¾ä±ú¡¢EndPage(hdcprint)º¯ÊýÈôòÓ¡»úÍ£Ö¹´òÓ¡£¬×îºóµ÷ÓÃEndDoc(hdcprint)º¯Êý½áÊøÉÏÊöµÄ´òÓ¡×÷Òµ¡£
¡¡¡¡¶þ¡¢±à³Ì²½Öè
¡¡¡¡1¡¢Æô¶¯Visual C++6.0£¬Ð½¨Ò»¸ö»ùÓÚ¶Ô»°¿òµÄÓ¦ÓóÌÐòTest£¬ÔÚ³ÌÐòµÄ¶Ô»°¿ò´°ÌåÖмÓÈëÒ»¸ö°´Å¥(Button),ÉèÖÃÕâ¸öButtonµÄÊôÐÔ:ID=IDC_PRINT,CAPTION="´òÓ¡"£»
¡¡¡¡2¡¢Ê¹ÓÃClass WizardÀàÏòµ¼Îª¸Ã°´Å¥Ìí¼ÓÒ»¸öÊó±êµ¥»÷´¦Àíº¯ÊýOnPrint£¨£©
¡¡¡¡3¡¢ÐÞ¸ÄTestDlg.cppÎļþÖеÄOnPrint£¨£©º¯Êý£»
¡¡¡¡4¡¢Ìí¼Ó´úÂ룬±àÒëÔËÐгÌÐò¡£
Èý¡¢³ÌÐò´úÂë
////////////////////////////////////////////
void CTestDlg::OnPrint()
{
¡¡char szprinter[80];
¡¡char *szDevice,*szDriver,*szOutput;
¡¡HDC hdcprint; // ¶¨ÒåÒ»¸öÉ豸»·¾³¾ä±ú
¡¡//¶¨ÒåÒ»¸ö´òÓ¡×÷Òµ
¡¡static DOCINFO di={sizeof(DOCINFO),"printer",NULL};
¡¡// µÃµ½É豸×Ö·û´®´æÈëÊý×észprinterÖÐ
¡¡GetProfileString("windows","device",",,,",szprinter,80);
¡¡// ½«É豸×Ö·û´®·Ö½â
¡¡if(NULL!=(szDevice=strtok(szprinter,","))&&NULL!=(szDriver=strtok(NULL,","))&&
NULL!=(szOutput=strtok(NULL,",")))
¡¡¡¡// ´´½¨Ò»¸ö´òÓ¡»úÉ豸¾ä±ú
¡¡¡¡if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)
¡¡¡¡{
¡¡¡¡¡¡if(StartDoc(hdcprint,&di)>0) //¿ªÊ¼Ö´ÐÐÒ»¸ö´òÓ¡×÷Òµ
¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡StartPage(hdcprint); //´òÓ¡»ú×ßÖ½,¿ªÊ¼´òÓ¡
¡¡¡¡¡¡¡¡SaveDC(hdcprint); //±£´æ´òÓ¡»úÉ豸¾ä±ú
¡¡¡¡¡¡¡¡// Êä³öÒ»ÐÐÎÄ×Ö
¡¡¡¡¡¡¡¡TextOut(hdcprint,1,1,"ÈÈÁÒ×£ºØ±à³ÌʵÀý³ö°æ·¢ÐУ¡",16);
¡¡¡¡¡¡¡¡RestoreDC(hdcprint,-1); //»Ö¸´´òÓ¡»úÉ豸¾ä±ú
¡¡¡¡¡¡¡¡EndPage(hdcprint); //´òÓ¡»úÍ£Ö½,Í£Ö¹´òÓ¡
¡¡¡¡¡¡¡¡EndDoc(hdcprint); //½áÊøÒ»¸ö´òÓ¡×÷Òµ
¡¡¡¡¡¡¡¡MessageBox("´òÓ¡Íê±Ï!","Ìáʾ",MB_ICONINFORMATION);
¡¡¡¡¡¡}
¡¡¡¡¡¡// ÓÃAPIº¯ÊýDeleteDCÏú»ÙÒ»¸ö´òÓ¡»úÉ豸¾ä±ú
¡¡¡¡¡¡DeleteDC(hdcprint);
¡¡¡¡}
¡¡¡¡else
¡¡¡¡{
¡¡¡¡¡¡MessageBox("ûÓÐĬÈÏ´òÓ¡»ú,»òÕßûÓа²×°´òÓ¡»ú!");
¡¡¡¡¡¡return;
¡¡¡¡}
¡¡}
¡¡¡¡ËÄ¡¢Ð¡½á
¡¡¡¡ÉÏÃæµÄÀý×ӷdz£¼òµ¥£¬±ÊÕßÖ÷ÒªÊÇͨ¹ýËü˵Ã÷ÈçºÎʵÏÖ´òÓ¡¹¦ÄÜ£¬¶ø²»ÊÇ˵Ã÷ÈçºÎʵÏÖ¸´ÔӵĴòӡЧ¹û£¬ÒòΪËüÃÇÒѾ²»ÊôÓÚÎÒÃÇÕâÀïËùÒªÌÖÂ۵ķ¶³ëÁË£¬ÏàÐŶÁÕßÅóÓÑÕæÕýÕÆÎÕÁËÉÏÃæʵÏÖ´òÓ¡¹¦Äܵķ½·¨ºó£¬Í¨¹ýÁé»îµÄÉèÖÃÉ豸»·¾³µÄ¸÷ÖÖ¶ÔÏó£¨Èç×ÖÌå¶ÔÏ󡢻ˢµÈ£©£¬Ò»¶¨¿ÉÒÔ´òÓ¡³ö¸÷ÖÖÂúÒâµÄЧ¹ûÀ´¡£