9.1 圖形應(yīng)用技巧
9.1.1 顯示適配器類型的自動測試
目前PC機(jī)及兼容機(jī)的顯示器及其適配器的類型非常多,有單色的,也有彩色的。這些顯示器及適配器的模式對應(yīng)用程序來說是非常重要的。如何在程序中自動識別顯示器的模式,以便更好地使用當(dāng)前的顯示模式是每個微機(jī)應(yīng)用程序開發(fā)者的一個重要課題。下面程序可以方便測出當(dāng)前顯示器適配器的模式(有關(guān)具體知識,請參見其它相關(guān)的技術(shù)書籍)。
[例9-1] 測試顯示適配器類型。
#include
#include
#define P(note) printf(note)
#define PV(format,value) printf(format ,v a l u e )
#define PM printf("mode is ")
#define PD printf("\n\tdetected graphics drive is")
void main( )
{
int gdrive,gerror,gmode;
detectgraph(&gdrive,&gmode); /* 標(biāo)準(zhǔn)測試函數(shù)*/
if(gdrive<0)
{
P("No graphics hardware detected !\n");
return;
}
switch (gdrive)
{
case 1: PD;
P("CGA");
switch(gmode)
{
case 0 :
PM;
P("CGAC0 320×200");
break;
case 1:
PM;
P("CGAC1 320×200");
break;
case 2:
PM;
P("CGAC2 320×200");
break;
case 3: PM; P("CGAC3 640×200"); break;
case 4: PM; P("CGAh4 320×200"); break;
}
break;
case 2: PD;
P("MCGA");
switch(gmode)
{
case 0: PM; P("MCGAC0 320×200"); break;
case 1: PM; P("MCGAC1 320×200"); break;
case 2: PM; P("MCGAC2 320×200"); break;
case 3: PM; P("MCGAC3 320×200"); break;
case 4: PM; P("MCGAC4 620×200"); break;
case 5: PM; P("MCGAC5 620×480"); break;
}
break;
case 3: PD;
P("EGA");
switch(gmode)
{
case 0 :PM;
P("EGALO 640×200");
break;
case 1:PM;
P("EGALO 640×350");
break;
}
9.1.1 顯示適配器類型的自動測試
目前PC機(jī)及兼容機(jī)的顯示器及其適配器的類型非常多,有單色的,也有彩色的。這些顯示器及適配器的模式對應(yīng)用程序來說是非常重要的。如何在程序中自動識別顯示器的模式,以便更好地使用當(dāng)前的顯示模式是每個微機(jī)應(yīng)用程序開發(fā)者的一個重要課題。下面程序可以方便測出當(dāng)前顯示器適配器的模式(有關(guān)具體知識,請參見其它相關(guān)的技術(shù)書籍)。
[例9-1] 測試顯示適配器類型。
#include
#include
#define P(note) printf(note)
#define PV(format,value) printf(format ,v a l u e )
#define PM printf("mode is ")
#define PD printf("\n\tdetected graphics drive is")
void main( )
{
int gdrive,gerror,gmode;
detectgraph(&gdrive,&gmode); /* 標(biāo)準(zhǔn)測試函數(shù)*/
if(gdrive<0)
{
P("No graphics hardware detected !\n");
return;
}
switch (gdrive)
{
case 1: PD;
P("CGA");
switch(gmode)
{
case 0 :
PM;
P("CGAC0 320×200");
break;
case 1:
PM;
P("CGAC1 320×200");
break;
case 2:
PM;
P("CGAC2 320×200");
break;
case 3: PM; P("CGAC3 640×200"); break;
case 4: PM; P("CGAh4 320×200"); break;
}
break;
case 2: PD;
P("MCGA");
switch(gmode)
{
case 0: PM; P("MCGAC0 320×200"); break;
case 1: PM; P("MCGAC1 320×200"); break;
case 2: PM; P("MCGAC2 320×200"); break;
case 3: PM; P("MCGAC3 320×200"); break;
case 4: PM; P("MCGAC4 620×200"); break;
case 5: PM; P("MCGAC5 620×480"); break;
}
break;
case 3: PD;
P("EGA");
switch(gmode)
{
case 0 :PM;
P("EGALO 640×200");
break;
case 1:PM;
P("EGALO 640×350");
break;
}