PDA

View Full Version : سوال: عدم انتقال مکان نمای ماوس در مد گرافیک



hadisalahi2
چهارشنبه 14 بهمن 1388, 15:52 عصر
با سلام به همه دوستان.
من با دستور زید مد صفحه نمایش رو به مد گرافیکی تغییر دادم.



int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");


حالا با دستور زیر یک رشته رو در یک مختصات از صفحه نمایش می دم



outtextxy(10,420,"Please Enter X1:");



حالا میخوام دقیقا بعد از این رشته مقدار مورد نظر از کاربر گرفته بشه . من مکان نمای ماوس رو با دستوز زیر به مکان مورد نظر انتقال میدم.



moveto(100,420);


اما متاسفانه هنگام دریافت مقدار مورد نظر ، مکان نما در ابتدای صفحه قرار میگیره و اصلا به مختصات مورد نظرمن منتقل نمیشه.
ممنون میشم دوستان راهنمایی کنند.
در ضمن من مقدار رو که یک عدد صحیحه با دستور Cin دریافت میکنم.
یا حق.



cin>>x1;

amin1softco
چهارشنبه 14 بهمن 1388, 15:59 عصر
بابا تو دیگه خیلی با حالی معلومه که هنوز به حالت گرافیکی نرفته
بین این جوری به حالت گرافیکی می روند:
که باید حتما پوشه bgi موجود باشه


/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int left, top, right, bottom;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "../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 */
}

hadisalahi2
چهارشنبه 14 بهمن 1388, 18:13 عصر
خوب من فایل EGAVGA رو داخل پوشه Bin کپی میکنم تا احتیاجی به پوشه Bgi نباشه.
اگه تو مد گرافیک نرفته پس چطور مستطیل رو میتونه برام رسم کنه؟

amin1softco
چهارشنبه 14 بهمن 1388, 21:13 عصر
اینجا دیگه مخ ایرانی به کار می افته و یک تابع به صورت زیر تعریف می کنه و با اون نوشته رو در یافت می کنه:لبخند:


char* gettext(){
char ch;
char* msg
char* all;
int i=0;
do{
ch=getch();
msg[0]=ch;
all[i++]=ch;
if (ch!=13) outtext(msg);
}while(ch!=13);
all[i-1]=0;
return all;
}

hadisalahi2
جمعه 16 بهمن 1388, 10:36 صبح
این تابع در هر مختصاتی که باشه رشته رو دریافت میکنه؟
در مد گرافیک یا متن؟

amin1softco
جمعه 16 بهمن 1388, 15:50 عصر
من این تابع را برای مد گرافیکی نوشتم که از ورودی کارکتر ها رو می گیره تا زمان فشردن اینتر و به خروجی گرافیکی( که به x ,y با دستور moveto انتقال داده شده باشه ) چاپ می کنه و البته می شه اون را برای مد تکست هم استفاده کرد اما جدی مگه از خود تابع بر نمی آد که چه کار می کنه یک مثال ساده هم گذاشتم اینجا که یک استرینگ را از کاربر دریافت می کنه در حالت گرافیکی و در حالت تکست چاپ می کنه :



#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

char* gettext(){
char ch;
char* msg;
char* all;
if (((msg = (char *) malloc(2)) == NULL)||(all = (char *) malloc(200)) == NULL)
{
printf("Not enough memory to allocate buffer\n");
exit(1); /* terminate program if out of memory */
}
int i=0;
do{
ch=getch();
msg[0]=ch;
all[i++]=ch;
if (ch!=13) outtext(msg);
}while(ch!=13);
all[i-1];
return all;
}

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
char* ms;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "../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 */
}

/* move the C.P. to location (20, 30) */
moveto(20, 30);
sprintf(ms,"%s",gettext());


/* clean up */
closegraph();
printf("%s",ms);
getch();
return 0;
}