2 回答

TA貢獻1829條經驗 獲得超4個贊
Turbo C對于用initgraph()函數直接進行的圖形初始化程序,在編譯和鏈接時并沒有將相應的驅動程序(*.BGI)裝入到執行程序, 當程序進行到intitgraph()語句時,再從該函數中第三個形式參數char *path中所規定的路徑中去找相應的驅動程序。若沒有驅動程序, 則在C:\TC中去找,如C:\TC中仍沒有或TC不存在,將會出現錯誤:
BGI Error: Graphics
not initialized (use 'initgraph')
因此, 為了使用方便,應該建立一個不需要驅動程序就能獨立運行的可執行圖形程序,Turbo C中規定用下述步驟(這里以EGA、VGA顯示器為例):
1. 在C:\TC子目錄下輸入命令:BGIOBJ EGAVGA
此命令將驅動程序EGAVGA.BGI轉換成EGAVGA.OBJ的目標文件。
2.在C:\TC子目錄下輸入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是將EGAVGA.OBJ的目標模塊裝到GRAPHICS.LIB庫文件中。
3.在程序中initgraph()函數調用之前加上一句:
registerbgidriver(EGAVGA_driver):
該函數告訴連接程序在連接時把EGAVGA的驅動程序裝入到用戶的執行程序中。
經過上面處理,編譯鏈接后的執行程序可在任何目錄或其它兼容機上運行。
假設已作了前兩個步驟,若再向例6中加registerbgidriver()函數則變成:
例7:
#include<stdio.h>
#include<graphics.h>
int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver): / *建立獨立圖形運行程序 */
initgraph( &gdriver,
&gmode,"c:\\tc");
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}
上例編譯鏈接后產生的執行程序可獨立運行。

TA貢獻2003條經驗 獲得超2個贊
initgraph()
功 能: 初始化圖形系統
函數原型: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);
頭文件:graphics.h
程序示例
#include "graphics.h"
#include "stdio.h"
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");
/* read result of initialization */
errorcode= graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}
/* draw a line */
line(0, 0, getmaxx(), getmaxy());
/* clean up */
getch();
closegraph();
return 0;
}
- 2 回答
- 0 關注
- 119 瀏覽
添加回答
舉報