delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/10/29/13:31:05

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Message-ID: <E94FF01DFF6CD31186F4080009DC3615035DAEBC@nttwr2.tower.bldgs.butlermfg.org>
From: "Parker, Ron" <rdparker AT butlermfg DOT com>
To: cygwin AT cygwin DOT com
Subject: .*Console.* Functions vs. tty
Date: Mon, 29 Oct 2001 12:29:32 -0600
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2653.19)

I am working on a program that offers a choice of user interfaces at run
time, similar to what xemacs does.  This application is designed to be
portable at least between cygwin, Linux, and native Windows.  One of the
UI's uses the standard console interfaces.  However, when the code runs
under cygwin with "tty" enabled, I cannot get the console screen buffer
information.  This is not dependent upon it being a cygwin compiled
application.  It "malfunctions" if compiled by gcc for cygwin, gcc for
MinGW, or MSVC.

I have narrowed the problem down to a simple portion of code, which will
exhibit the same behavior as my application.  The GetConsoleScreenBufferInfo
function fails with error 6, ERROR_INVALID_HANDLE.  

How can I work around this without forcing the user to use "notty"?

#include <windows.h>

int main()
{
  int retval = 0;
  CONSOLE_SCREEN_BUFFER_INFO csbi;
  
  HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);

  AllocConsole();
  if (output == INVALID_HANDLE_VALUE)
  {
    printf("GetStdHandle failed: %ld\n", GetLastError());
    retval = 1;
  }
  else if (!GetConsoleScreenBufferInfo(output, &csbi))
  {
    printf("GetConsoleScreenBufferInfo failed: %ld\n", GetLastError());
    retval = 2;
  }
  else
    printf("Success.");

  return retval;
}


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019