Why Is My Turbo C Graphics Window Not Displaying Correctly?

  • Thread starter Thread starter Yamna
  • Start date Start date
  • Tags Tags
    Window
Click For Summary

Discussion Overview

The discussion revolves around issues related to the Turbo C graphics window not displaying correctly when running a program intended to create a graphical interface. Participants explore the compatibility of Turbo C with modern operating systems, particularly Windows XP, and the implications of running DOS-based graphics in a non-DOS environment.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant reports that their Turbo C program compiles and runs but does not display the expected graphics window.
  • Another participant inquires about the environment in which Turbo C is being run, specifically whether it is in MSDOS or a virtual PC.
  • A participant suggests that the program is not creating a window in the traditional sense but is attempting to take over the whole screen, which may not function correctly under Windows.
  • Concerns are raised about the emulation of EGA/VGA BIOS calls in the Windows XP DOS console, with a participant noting that certain functionalities may not be supported.
  • One suggestion is made to use Virtual PC 2007 with an installation of MSDOS to potentially resolve compatibility issues.

Areas of Agreement / Disagreement

Participants express differing views on the compatibility of Turbo C with Windows XP and whether the graphics window issue is due to the operating environment. There is no consensus on a definitive solution to the problem.

Contextual Notes

Limitations include potential misunderstandings about the nature of graphics window creation in DOS versus Windows environments, as well as the reliance on BIOS calls that may not be fully supported in modern systems.

Yamna
Messages
4
Reaction score
0
this is my program but this is not working well.according to me a window should be created and some text will be written there.but the window is not working please can anyone tell me why?and how can i eject this error.
mind that compiler is running the program correctly..
C Syntax (Toggle Plain Text)
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int left, top, right, bottom;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

/* 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); /* terminate with an error code */
}

left = getmaxx() -getmaxx()+1;
top = getmaxy()-getmaxy()+1;
right = getmaxx();
bottom = getmaxy()-getmaxy()+20;
/* draw a rectangle */
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"file name");

right=getmaxx()/5;
top=bottom;
bottom=bottom+20;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"new");

left=right;
right=(getmaxx()/5)*2;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"open");

left=right;
right=(getmaxx()/5)*3;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"save");

left=right;
right=(getmaxx()/5)*4;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"save as");

left=right;
right=getmaxx();
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"delete");

left=1;
right=getmaxx()/7;
top=bottom;
bottom=bottom+20;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"cut");

left=right;
right=(getmaxx()/7)*2;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"copy");

left=right;
right=(getmaxx()/7)*3;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"paste");

left=right;
right=(getmaxx()/7)*4;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"t_colour");

left=right;
right=(getmaxx()/7)*5;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"text_size");

left=right;
right=(getmaxx()/7)*6;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"text_type");

left=right;
right=getmaxx();
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"bk_colour");

left=1;
right=(getmaxx()/8);
top=bottom;
bottom=bottom+20;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"bold");

left=right;
right=(getmaxx()/8)*2;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"italic");

left=right;
right=(getmaxx()/8)*3;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"underline");

left=right;
right=(getmaxx()/8)*4;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"right");

left=right;
right=(getmaxx()/8)*5;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"left");

left=right;
right=(getmaxx()/8)*6;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"mid");

left=right;
right=(getmaxx()/8)*7;
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"justified");

left=right;
right=getmaxx();
rectangle(left,top,right,bottom);
outtextxy(left+2,top+10,"highlighter");

left=1;
right=getmaxx();
top=bottom;
bottom=getmaxy();

window(left,top,right,bottom);
cputs("hello world in window");

getch();
/* clean up */
closegraph();
return 0;
getch();
}:confused:
 
Technology news on Phys.org
How are you running Turbo C, in MSDOS or a virtual PC running MSDOS? Is Turbo C running ok in it's text windowed mode?
 
yes its working properly i am using windows xp.but does that matter?:confused:
 
Yamna said:
according to me a window should be created

You are not trying to create a window (as a window in Microsoft Windows), but to steal a whole screen. Such an approach worked correctly in the old DOS times, but it doesn't work under Windows - unless you will use some kind of DOS emulator.
 
Yamna said:
yes its working properly i am using windows xp.but does that matter?
I'll assume you're doing this in full screen mode (as opposed to windowed mode)? Even so, I'm not sure if all the EGA/VGA bios calls (INT 10H) are emulated in the dos console window for Windows XP. For example, with Windows XP dos console in full screen mode, my old msdos programs are able to load fonts via bios calls, but I'm not able to change the number of lines between 25, 43, or 50 via bios calls.

You could consider using Virtual PC 2007 and installing MSDOS onto it, if you have a copy of MSDOS that you can install. It's a bit of a pain to transfer stuff over to virtual PC. I trasfer files to a cd-rw disc, then copy them from the cd-rw dics in Virtual PC. I haven't tried going the other way. There may be utilities that can transfer to/from a virtual hard drive image, but I haven't tried to look for these.
 

Similar threads

Replies
1
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 13 ·
Replies
13
Views
4K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 16 ·
Replies
16
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K