みんな。私はまだプログラミングに慣れていません。私が直面している問題について、本当に助けが必要です。ということで、端末サイズが80x24以下の場合に警告を表示させようとしているのが現状です。記録として、私の OS は Windows ですが、すべてのファイルが Linux にあるため、仮想マシンを使用して Linux を実行しています。ターミナルを使用してファイルを実行すると、警告が正しく表示されます。しかし問題は、PuTTY を使用して Windows からファイルを実行しようとしたときです。警告は表示されませんでした。私が使用している機能はLinux環境のみを読み取ることができ、Windowsは読み取れないためだと思います。誰かが私を助けたり、ウィンドウの寸法を取得できるようにする方法を教えてくれたりできますか? ファイルはすべて Linux に残す必要があります。私はCを使用しています。
以下は、警告の表示とディメンションの取得について示すコードの一部です。
//This is to display warning
int display_warning()
{
CDKSCREEN *cdkscreen = 0;
WINDOW *cursesWin = 0;
char *mesg[5];
char *buttons[] = {"[ OK ]"};
CDKDIALOG *confirm;
cursesWin = initscr();
cdkscreen = initCDKScreen (cursesWin);
initCDKColor();
mesg[0] = "</2>"The size of Window must be at least 80x24.";
confirm = newCDKDialog(cdkscreen, CENTER, CENTER, mesg, 1, buttons, A_REVERSE, TRUE,TRUE, FALSE);
setCDKDialogBackgroundColor(confirm, "</2>");
injectCDKDialog(confirm,TAB);
activateCDKDialog(confirm,0);
if (confirm -> exitType == vNORMAL){
destroyCDKDialog (confirm);
destroyCDKScreen (cdkscreen);
endCDK();
}
return 0;
}
//This is to get the dimension
int get_terminal_size()
{
int cols;
int lines;
#ifdef TIOCGSIZE
struct ttysize ts;
ioctl(0,TIOCGSIZE, &ts);
lines = ts.ts_linesl;
cols = ts.ts_cols;
#elif defined(TIOCGWINSZ)
struct winsize ts;
ioctl(0, TIOCGWINSZ, &ts);
lines = ts.ws_row;
cols = ts.ws_col;
#endif
if((lines <= 23)||(cols <= 79)){
display_warning();
}
return 0;
}
//then there will be the main function that i think is not necessary to put the code here.
すべてのコメントとヘルプは非常に高く評価されています。プログラミング初心者なので、わからないところがありましたらご容赦ください。
フィクリー