Bitmapy w konsoli c++

0

Witam. Czy do programu konsolowego da się wstawiać bitmapy? Miałem przykład z WinApi :

case WM_PAINT:
{
 PAINTSTRUCT ps; //deklaracja struktury
 HDC hdc = BeginPaint(hwnd, &ps);
 //...
 //instukcje rysujące coś na oknie
 //...
 EndPaint(hwnd, &ps); //zwalniamy hdc
}
break;

ale w c++ nie ma chyba czegoś takiego jak WM_PAINT? czy by działało jkakbym wstawił coś takiego ?

 HDC hdc = BeginPaint(hwnd, &ps);
 //...
 //instukcje rysujące coś na oknie
 //...
 EndPaint(hwnd, &ps); //zwalniamy hdc

Jak można wstawić bitmapkę?? Pozdrawiam.

0

konsola -> znaki ascii
chyba, ze ascii art

0

czyli że nie da się bitmap wstawić w konsole??

0
samsung 3G napisał(a)

czyli że nie da się bitmap wstawić w konsole??

C++ jest językiem. Da się, jeżeli użyjesz bibliotek, które na to pozwalają.

0
pcmcymc napisał(a)

Da się, jeżeli użyjesz bibliotek, które na to pozwalają.

A jakie to?

0

Uczyłem się WINAPI aby dodać bitmapy trzeba użyć biblioteki "windows.h".
Ale nie wiem jaka to konstrukcja pod konsolą bo tam w parametrze trzeba podać uchwyt do okna a w konsoli nie wiem jak to zrobić? Może pomoże ktoś kto robił albo wie jak w konsoli bitmapy wstawić.

0

np. GRX(działa nawet pod DOSem), Allegro

0

Fajnie, tylko te biblioteki mają raczej niewielki związek z konsolą.

0

Dlatego napisalem, tobie ze konsola sluzy do WYSWIETLANIA ZNAKOW !!

BITMAPA SKLADA SIE Z PIXELI !!

Zatem moze byc tak, ze bitmapa zostanie przedstawiona jako ASCII-ART.
Tak ze znak X-niebieski, C-zielony, ...

Mozna lapac uchwyt konsoli windows i malowac po nim ale to bez sensu bo to nie wstawianie do konsoli (a co jak ktos uzywa power shell'a).

Napisz jaki efekt chcesz uzyskac ? Zdefinuj pojecie konsola - czym jest dla ciebie.
Moze chodzi Ci o efekt aby w tle konsoli byl obrazek (ala konsole linux ?).

0

Jedyne typowo konsolowe coś to odtwarzacz mplayer. Odtwórz sobie w nim film pod konsolą :D (bez Xów)

0

Chodzi o to żeby wstawić na lewym olnym rogu taką małą strzałeczkę. np. http://img26.imageshack.us/i/strzalka3d.png/ po naciśnięciu na nią ma się wyświetlić prostokąd. TO ma by c bitmapa a nie ze znaków ascii. da się jakoś?? coćby (allegro?)(

0

HWND zwraca funkcja GetConsoleWindow(), a rysujesz w timerze - GetDC() + BitBlt() + ReleaseDC().

0

Mam zrozumieć że mam dołączyć bibliotekę "time.h" i skorzystać z tych funkjii "GetDC() + BitBlt() + ReleaseDC()."?? Jeszcze jedno pytanie jak można robić aby aplikacja z WINAPI miało za okno rodzica konsolę (chcę odpalać aplikacje z WINAPI z konsoli i żeby nie powracało do pulpitu )a nie pulpit? jak to wstawić w tej funkcji zamiast hwnd??

 HWND Okno=CreateWindowEx(0,"Klasa okna","Tytuł okna",WS_OVERLAPPEDWINDOW,50,50,100,100,hwnd,0,hInst,0);
0

no skoro tak jedziemy, to mozemy nawet nie wstawiac timera a postawic haka na okno konsolowe (jest na tym forum). No szczegolnie, ze chcesz reagowac na nacisniecie klawisza myszy.

Moze miec rodzica, wystarczy ukryc i childa dac.

0

Możesz dokłądnie dać opis jak zrobić aby program z WINAPI był dzieckiem konsoli. Dotychczas jak mam konsolę pełnoekranową i odpalam z niej program zrobiony w winapi to mi przeskakuje na pulpit i konsola się minimalisuje , chcĘ aby się nie minimalisowała a program się na konsoli pokazywał.Jak postawić haka nie mogę znaleźdż:/

0
reichel napisał(a)

postawic haka na okno konsolowe

Mało rewelacyjny proces, okno konsoli nie należy do procesu.

0
Świętowit napisał(a)
reichel napisał(a)

postawic haka na okno konsolowe

Mało rewelacyjny proces, okno konsoli nie należy do procesu.

Mamy uchwyt okna > dostajemy proces. Haka mozemy postawic globalnego. mozemy w nim sprawdzac czy przyszedl komunikat do okna konsoli. Zatem mozemy obslugiwac co tylko chcemy.

Świętowit nie za bardzo zrozumialem twoja wypowiedz ?

Da sie:

wspomniane przez sapero


GetConsoleWindow
GetDC()
BitBlt()
ReleaseDC().

oraz
SetWindowsHookEx (WH_CALLWNDPROCRET lub WH_CALLWNDPROC - zalezy od rozwiazania)
WM_PAINT
WM_LBUTTONDOWN


dodatkowo kilka uladniaczy, np zeby tekst konsolowy nie wchodzil na bitmape (funkcje konsoli z MSDN i pozycja kursora)
ale to misc

0
reichel napisał(a)

Świętowit nie za bardzo zrozumialem twoja wypowiedz ?

Za okno konsoli nie odpowiada program tylko systemowy proces csrss.exe.

0

No i co z tego ? Napisalem na okno konsolowe nie wspominajac o aplikacji uzytkownika ...

moze byc command.com :) moze byc cmd.exe moze byc powershell.exe - nie ma znaczenia

oczywiscie command.com to lekka przesada (tam byla jeszcze inna aplikacja - ale to juz dawo nie zyje)

0

Możecie wytłumaczyć mi jak zrobić żeby po uruchomieniu programu WINAPI konsola się nie minimalisowała?. Myślę że trzeba zrobić żeby program WINAPI był dzieckiem tego programu co napisze w konsoli

0
#include "stdafx.h"
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{

	ShowWindow(GetConsoleWindow(), SW_SHOWMINIMIZED);
	return 0;
}

Mam wrazenie, ze nie do konca pojmujesz czym sa okna, konsola (jako taka a nie okno), ..., winapi ...

poza tym zmieniasz podejsci najpierw malowac teraz minimalizowac - nie wiesz co chcesz osiagnac i brniesz w slepa uliczke

.... a nie mimimalizowala, bez znaczenia. Podaj caly swoj kod (tj. bez szczegolow - konsola, okno, ...)

1 użytkowników online, w tym zalogowanych: 0, gości: 1