# URGENT:Print Screen of output in Turbo C



## NagpurDaMunda (Apr 18, 2007)

hello , 
anybody can help me urgently plz. 
i have already complete a code using Turbo C.i'm now doing 
the documentation for my project. i'd like to print screens of the output from turbo C and paste it in Paint  but the bottom PrintScreen SysRq in the keyboard doesn't do the job i want. so what shall i do? 
anybody can help me plz. 

THANX A LOT


----------



## khattam_ (Apr 18, 2007)

NagpurDaMunda said:
			
		

> hello ,
> anybody can help me urgently plz.
> i have already complete a code using Turbo C.i'm now doing
> the documentation for my project. i'd like to print screens of the output from turbo C and paste it in Paint  but the bottom PrintScreen SysRq in the keyboard doesn't do the job i want. so what shall i do?
> ...



Yeah, I have to do the same too (i mean submit a report and i think i shud also give a presentation of my project)... so i needed this tooo..

However, i have figured out an idea to do it....

Compile your project and copy it to a bootable floppy (or floppy image if you dont have a floppy drive dont wish to use one). Then, boot into a Virtual Computer (VMware Beta 6 from VMware.com beta downloads) and then record video or take pictures.....


If you cant figure out, do let me know...


----------



## NagpurDaMunda (Apr 18, 2007)

sorry but i didnt get u


----------



## kuldhirsingh (May 19, 2009)

you can use this cpp code in your program to capture that graphic image
//Here is a program to save a graphical o/p to bmp
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>

int SaveBMP16(char []);
typedef unsigned char byte;
typedef unsigned int word;
typedef unsigned long dword;
void main()
{
    /* request auto detection */
    int gdriver;
    int gmode, errorcode;
    detectgraph(&gdriver,&gmode);
    /* initialize graphics and local variables */
    initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

    errorcode = graphresult();
    if (errorcode != grOk)  /* an error occurred */
       exit(1);


    int midx, midy,radius = 100;

    midx = getmaxx() / 2;
    midy = getmaxy() / 2;

    setcolor(getmaxcolor());

    /* draw the circle */
    circle(midx, midy, radius);

    /* clean up */
    SaveBMP16("Circle.Bmp");
}

struct BMP
{

// BitMap File Header
    byte bfType[2]; /* 1 2 must always be set to 'BM' to declare that this is a .bmp file.*/
    dword bfSize;  /* 3 4   specifies the size of the file in bytes.*/
    word bfReserved1;// 7 2 must always set to zero.                  */
    word bfReserved2;// 9 2 must always be set to zero.
    dword bfOffset;    // 11 4 specifies the offset from the beginning of the file to bitmap data.

// BitMap Image Header
    dword biSize;   // 15 4 specifies the size of the BitMap Header structure, in bytes.
    dword biWidth;  // 19 4 specifies the width of image, in pixels.
    dword biHeight; // 23 4 specifies the height of image, in pixels.
    word biPlanes;    // 27 2 specifies the number of planes of the target device,must be set to 0
    word biBitCount; // 29 2  specifies the number of bits per pixel.
    dword biCompression; //31 4 Specifies the type of compression, usually set to 0 - No Compres
    dword biSizeImage;  // 35 4 specifies the size of the image data, in bytes. If                     there is no compression, it is valid to set this member to zero.
    dword biXPelsPerMeter; //39 4 specifies the the horizontal pixels per meter on the                     designated targer device, usually set to zero.
    dword biYPelsPerMeter;    // 43 4 specifies the the vertical pixels per meter on the                     designated targer device, usually set to zero
    dword biClrUsed;     // 47 4 specifies the number of colors used in bitmap, if set to 0                    number of colors is calculated using the biBitCount member.
    dword biClrImportant;    // 51 4 specifies the number of color that are 'important' for                     the bitmap, if set to zero, all colors are important.
};


int SaveBMP16(char file[])
{
    int i=0, j=0, r, g, b;

    FILE *fp;
    BMP *bmp;

    bmp=(BMP *)malloc(54);

    bmp->bfType[0]='B';
    bmp->bfType[1]='M';
    bmp->bfSize=153718;
    bmp->bfReserved1=0;
    bmp->bfReserved2=0;
    bmp->bfOffset=118;
    bmp->biSize=40;
    bmp->biWidth=640;
    bmp->biHeight=480;
    bmp->biPlanes=1;
    bmp->biBitCount=4;
    bmp->biCompression=0;
    bmp->biSizeImage=153600;   //Fixed Size ?
    bmp->biXPelsPerMeter=0;
    bmp->biYPelsPerMeter=0;
    bmp->biClrUsed=0;
    bmp->biClrImportant=0;

    fp=fopen(file, "wb");
    if(fp == NULL)
    {
        printf("File can't be open");
        getch();
        return 1;
    }


    fwrite(bmp, 54, 1, fp);
    fseek(fp, 54L, SEEK_SET);

    // Upto Here its OK.


    // Question 1. What do next 16x4 Lines do ?

    fputc(0x0, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(127, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(0x0, fp);
    fputc(127, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(127, fp);
    fputc(127, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(0x0, fp);
    fputc(0x0, fp);
    fputc(127, fp);
    fputc(0x0, fp);

    fputc(127, fp);
    fputc(0x0, fp);
    fputc(127, fp);
    fputc(0x0, fp);

    fputc(0x0, fp);
    fputc(192, fp);
    fputc(192, fp);
    fputc(0x0, fp);

    fputc(192, fp);
    fputc(192, fp);
    fputc(192, fp);
    fputc(0x0, fp);

    fputc(128, fp);
    fputc(128, fp);
    fputc(128, fp);
    fputc(0x0, fp);

    fputc(255, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(0x0, fp);
    fputc(255, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(255, fp);
    fputc(255, fp);
    fputc(0x0, fp);
    fputc(0x0, fp);

    fputc(0x0, fp);
    fputc(0x0, fp);
    fputc(255, fp);
    fputc(0x0, fp);

    fputc(255, fp);
    fputc(0x0, fp);
    fputc(255, fp);
    fputc(0x0, fp);

    fputc(0x0, fp);
    fputc(255, fp);
    fputc(255, fp);
    fputc(0x0, fp);

    fputc(255, fp);
    fputc(255, fp);
    fputc(255, fp);
    fputc(0x0, fp);

    i=0;
    j=479;

    fseek(fp, 118, SEEK_SET);

    while(j>=0)
    {
        i=0;
        while(i<640)
        {
            fputc((getpixel(i, j)<<4) | getpixel(i+1, j), fp); //Que 2. What does this do ? Why Left Shift 4 times and why Bit wise ORing of two pixles.  
            i+=2;
        }
        j--;
    }
    free(bmp);
    fclose(fp);
    return 0;
}



NagpurDaMunda said:


> hello ,
> anybody can help me urgently plz.
> i have already complete a code using Turbo C.i'm now doing
> the documentation for my project. i'd like to print screens of the output from turbo C and paste it in Paint  but the bottom PrintScreen SysRq in the keyboard doesn't do the job i want. so what shall i do?
> ...


----------



## Disc_Junkie (May 19, 2009)

NagpurDaMunda said:


> hello ,
> anybody can help me urgently plz.
> i have already complete a code using Turbo C.i'm now doing
> the documentation for my project. i'd like to print screens of the output from turbo C and paste it in Paint  but the bottom PrintScreen SysRq in the keyboard doesn't do the job i want. so what shall i do?
> ...



The Print Screen key does work there but not for paint but for Text Editors... The black screen is changed to white and the text is changed to black. You'll get to see it when you paste in Notepad or any other text editor...


----------



## speedyguy (May 19, 2009)

take a screen shot of the output wen not in full screen mode(if not a graphics code) n cutout the dos part in paint...

Enjoy~!


----------



## paroh (May 19, 2009)

Simply use dosbox emulator and u can print the screen
See my this post (VIDEO Tutorial is also uploaded) how to set the setting to run dosbox


```
*www.thinkdigit.com/forum/showthread.php?t=103652&highlight=dosbox
```


----------

