Avatar billede mad_man Nybegynder
12. august 2003 - 17:48 Der er 20 kommentarer og
1 løsning

bunden af console i windows2k/xp

hvordan finder man bunden af consolen...
COORD coord;
coord.X = (0);
coord.Y = (24);
SetConsoleCursorPosition(hConsole, coord);

i stedet for de 24 i y korridnaten skal jeg bruge bunden af konsollen....

kan det gøres???
/mad_man
Avatar billede arne_v Ekspert
12. august 2003 - 18:03 #1
Som skrevet i et andet spørgsmål:

GetConsoleScreenBufferInfo

CONSOLE_SCREEN_BUFFER_INFO har et felt for det.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/console_screen_buffer_info_str.asp

citat:

typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
  COORD dwSize;
  COORD dwCursorPosition;
  WORD wAttributes;
  SMALL_RECT srWindow;
  COORD dwMaximumWindowSize;
} CONSOLE_SCREEN_BUFFER_INFO;

Members

dwSize
    A COORD structure that contains the size of the console screen buffer, in character columns and rows.

...
Avatar billede mad_man Nybegynder
12. august 2003 - 18:25 #2
ahhhhhh nu har jeg fattet hvad de mener med
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
  COORD dwSize;
  COORD dwCursorPosition;
  WORD wAttributes;
  SMALL_RECT srWindow;
  COORD dwMaximumWindowSize;
} CONSOLE_SCREEN_BUFFER_INFO;

=)
tak for det
Avatar billede mad_man Nybegynder
12. august 2003 - 18:25 #3
hov nu fik jeg det ik tjækket
det gøre jeg lige efter jeg har spist =)
Avatar billede mad_man Nybegynder
12. august 2003 - 19:03 #4
hmm det dur ikke
den sætter det bare til en linje langt nede og så ellers når den kommer der til køere den bare videre under den...
Avatar billede mad_man Nybegynder
12. august 2003 - 19:07 #5
ups
jeg har brugt dwMaximumWindowSize
skal jeg ik bruge dwSize
jov jeg skal...
hov min fejl
Avatar billede mad_man Nybegynder
12. august 2003 - 19:13 #6
det virker altså ik lige meget hvordan
Avatar billede arne_v Ekspert
12. august 2003 - 19:23 #7
Hm.

Jeg prøvede lige med:

#include <windows.h>

#include <stdio.h>

int main()
{
  HANDLE h;
  CONSOLE_SCREEN_BUFFER_INFO info;
  h = GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(h,&info);
  printf("%d %d\n",info.dwSize.X,info.dwSize.Y);
  return 0;
}

Og det giver 80 (korrekt) 1000 (jeg har en mega stor scoll buffer
i Windows 2000).

Er det også dit problem ?
Avatar billede arne_v Ekspert
12. august 2003 - 19:28 #8
Jeg udvidede lige programmet lidt.

#include <windows.h>

#include <stdio.h>

int main()
{
  HANDLE h;
  CONSOLE_SCREEN_BUFFER_INFO info;
  h = GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(h,&info);
  printf("%d %d\n",info.dwSize.X,info.dwSize.Y);
  printf("%d %d\n",info.srWindow.Left,info.srWindow.Top);
  return 0;
}

Jeg tror bare at jman skal trække Top fra !
Avatar billede mad_man Nybegynder
12. august 2003 - 19:49 #9
på min computer kommer der
80 300
0 0
ud
Avatar billede mad_man Nybegynder
12. august 2003 - 19:49 #10
det er under windows 2000
Avatar billede mad_man Nybegynder
12. august 2003 - 19:51 #11
skal man så til og lave noget som:
man tager og laver 23 variabler til det man modtager og så tager og printer ALLE sammen hver gang og så flytter med hvad for en den skal starte fra så man ik bruger mere end de 24 øverste linjer
Avatar billede arne_v Ekspert
12. august 2003 - 19:57 #12
Prøv med den her:

#include <windows.h>

#include <stdio.h>

int main()
{
  HANDLE h;
  CONSOLE_SCREEN_BUFFER_INFO info;
  h = GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(h,&info);
  printf("buffer size %d x %d\n",info.dwSize.X,info.dwSize.Y);
  printf("screen size %d x %d\n",info.srWindow.Right-info.srWindow.Left+1,
          info.srWindow.Bottom-info.srWindow.Top+1);
  return 0;
}
Avatar billede arne_v Ekspert
12. august 2003 - 19:57 #13
buffer size 80 x 1000
screen size 80 x 25

hos mig.
Avatar billede mad_man Nybegynder
12. august 2003 - 19:58 #14
80 x 300
80 x 25
her
Avatar billede mad_man Nybegynder
12. august 2003 - 20:00 #15
hvorfor skriver du egnetelig +1
Avatar billede arne_v Ekspert
12. august 2003 - 20:01 #16
Passer fint nok (jeg har som sagt udvidet scroll back buffer).

Så det må være:
  info.srWindow.Bottom-info.srWindow.Top+1
du skal bruge ....
Avatar billede arne_v Ekspert
12. august 2003 - 20:02 #17
Position 0-79 er 80 tegn.
Avatar billede mad_man Nybegynder
12. august 2003 - 20:02 #18
nåå oki =)
Avatar billede arne_v Ekspert
12. august 2003 - 20:02 #19
Derfor ligger jeg 1 til.
Avatar billede arne_v Ekspert
12. august 2003 - 20:07 #20
Jeg tror iøvrigt at SetConsoleCursorPosition kører på buffer
koordinater og ikke på screen koordinater.
Avatar billede arne_v Ekspert
12. august 2003 - 20:09 #21
Og i så fald skal du positionere dig i info.srWindow.Bottom !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester