Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Odczyt pozycji okna konsoli [C++]

Ostatnio zmodyfikowano 2014-10-19 13:48
Autor Wiadomość
jegor377
Temat założony przez niniejszego użytkownika
Odczyt pozycji okna konsoli [C++]
» 2014-10-19 13:10:18
Tak jak w temacie. Napisałem kod, który ma za zadanie odczytać pozycję okna konsoli...


WINDOWINFO info;
HWND hOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetWindowInfo(hOut, info);
cout<<info.rcWindow;

Sam kod nie działa i pokazują się błędy. Nie znam za bardzo winapi (ale uczę się robiąc w nim programy takie jak te i do tond nie miałem żadnego problemu), a chce to ponieważ odczytuje pozycję myszki w pikselach, a one są nie w oknie, a całym ekranie i wymyśliłem, że odejmę pozycję okna i szerokość ramki okna od pozycji myszki, podzielę x na 8, a y na 16 (bo jeden znak w konsoli tyle ma) i odczytam pozycję myszki, ale nie mogę odczytać pozycji okna, więc proszę o pomoc, bo nie wiem co w tym kodzie jest źle... :C
P-118860
pekfos
» 2014-10-19 13:26:29
GetStdHandle() nie zwraca uchwytu do okna. Powinno być GetConsoleWindow().
P-118867
jegor377
Temat założony przez niniejszego użytkownika
» 2014-10-19 13:29:37

WINDOWINFO info;
GetWindowInfo(GetConsoleWindow(), info);
cout<<info.rcWindow;

a log kompilacji to:


||=== Build: Debug in biblioteka 2d (compiler: GNU GCC Compiler) ===|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp||In function 'int main()':|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|33|error: 'GetConsoleWindow' was not declared in this scope|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|error: no match for 'operator<<' in 'std::cout << info.tagWINDOWINFO::rcWindow'|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note: candidates are:|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|106|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|106|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'std::basic_ostream<char>::__ostream_type& (*)(std::basic_ostream<char>::__ostream_type&) {aka std::basic_ostream<char>& (*)(std::basic_ostream<char>&)}'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|115|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>; std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|115|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'std::basic_ostream<char>::__ios_type& (*)(std::basic_ostream<char>::__ios_type&) {aka std::basic_ios<char>& (*)(std::basic_ios<char>&)}'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|125|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|125|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'std::ios_base& (*)(std::ios_base&)'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|164|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|164|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'long int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|168|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|168|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'long unsigned int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|172|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|172|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'bool'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|93|note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char; _Traits = std::char_traits<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|93|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'short int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|179|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|179|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'short unsigned int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|107|note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char; _Traits = std::char_traits<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|107|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|190|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|190|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'unsigned int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|199|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|199|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'long long int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|203|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|203|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'long long unsigned int'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|218|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|218|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'double'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|222|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|222|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'float'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|230|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|230|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'long double'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|243|note: std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|243|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'const void*'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|121|note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|121|note:   no known conversion for argument 1 from 'RECT {aka tagRECT}' to 'std::basic_ostream<char>::__streambuf_type* {aka std::basic_streambuf<char>*}'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|2750|note: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|2750|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   'RECT {aka tagRECT}' is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|469|note: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|469|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   deduced conflicting types for parameter '_CharT' ('char' and 'tagRECT')|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|474|note: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|474|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'char'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|480|note: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, char)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|480|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'char'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|486|note: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, signed char)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|486|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'signed char'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|491|note: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|491|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'unsigned char'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|511|note: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|511|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   mismatched types 'const _CharT*' and 'tagRECT'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|323|note: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\ostream.tcc|323|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'const char*'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|528|note: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|528|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'const char*'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|541|note: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|541|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'const signed char*'|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|546|note: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*)|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\ostream|546|note:   template argument deduction/substitution failed:|
C:\Users\jegor_000\Desktop\Pulpit\Projekty C++\biblioteka 2d\main.cpp|34|note:   cannot convert 'info.tagWINDOWINFO::rcWindow' (type 'RECT {aka tagRECT}') to type 'const unsigned char*'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 2 second(s)) ===|

Dalej nie działa :C Co robię źle? :C

PS dodałem #define _WIN32_WINNT 0x0500 i jeszcze gorzej :C
P-118869
pekfos
» 2014-10-19 13:31:01
GetWindowInfo() pobiera wskaźnik, a nie strukturę i nie możesz wyświetlić rcWindow na std::cout.
P-118870
jegor377
Temat założony przez niniejszego użytkownika
» 2014-10-19 13:36:27
Hmm to jak ją odczytać? :/

Podał byś mi jakiś przykład, na którym mógł bym się wzorować? C:
P-118873
jegor377
Temat założony przez niniejszego użytkownika
» 2014-10-19 13:40:15
Sorry, że nowy post, ale mogłeś dodać wiadomość jak edytowałem.

Udało mi się, tylko nie wiem jak odczytać tą pozycję :C


#define _WIN32_WINNT 0x0500
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    WINDOWINFO info;
    GetWindowInfo(GetConsoleWindow(), &info);
    //cout<<info.rcWindow;
    return 0;
}
P-118876
pekfos
» 2014-10-19 13:42:54
P-118879
jegor377
Temat założony przez niniejszego użytkownika
» 2014-10-19 13:48:14
DZIĘKI!!!!

oto kod tego cuda, która ma działać dla innych pokoleń :

C/C++
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    while( true )
    {
        system( "cls" );
        WINDOWINFO info;
        GetWindowInfo( GetConsoleWindow(), & info );
        cout << info.rcWindow.left;
        cout << endl << info.rcWindow.top;
        Sleep( 100 );
    }
    return 0;
}

JESZCZE RAZ THX!!!
P-118880
« 1 »
  Strona 1 z 1