Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tekstin väri

Sivun loppuun

teksturi [12.05.2004 16:37:49]

#

Kertoisiko joku minulle miten saan väriä tekstiin kirjoittaisi vaikka jonkun hello world tapaisen ohjelman jossa hello world on vaikka sinisellä.

sqwiik [12.05.2004 17:25:33]

#

Kielikin olisi hyvä mainita, ja sovelluspohja (konsoli, win-sovellus etc..)
Mutta asiaan: ainakin C/C++ konsolisovelluksissa tekstin väriä saa vaihdettua textcolor-funktiolla (conio.h), ja värillistä tekstiä saa sitten tulostettua ainakin cprintf-funktiolla joka ottaa huomioon värinvaihdon.

Linkku [12.05.2004 18:41:52]

#

http://www.functionx.com/win32/
Tuolta löytynee, jos aiot win32 sovellusta tehä.

hunajavohveli [12.05.2004 20:42:24]

#

Saako millään funktiolla vaihdettua väriä, niin että toimisi coutillakin?

teksturi [13.05.2004 15:11:49]

#

itse olen sen tehnyt näin;

#include <windows.h>
#include <conio.h>

int old_tmode;

HWND    hwnd;
HDC     hdc;

COLORREF old_fcolor, old_bcolor;

void main (void)
{
  HDC hdc = GetDC(hwnd);
  old_fcolor = SetTextColor(hdc, RGB(0,255,0));
  old_bcolor = SetBkColor(hdc, RGB(0,0,0));
  old_tmode = SetBkMode(hdc, TRANSPARENT);
  TextOut(hdc, 20,30,"Hello world", strlen ("Hello world");
}

Mutta se tulostaa sen suoraan ruudulle ei ohjelma ikkunaan käytän kääntäjää visual c++ 6.0 ja kielenä c++.

Linkku [13.05.2004 18:46:33]

#

teksturi kirjoitti:

itse olen sen tehnyt näin;

#include <windows.h>
#include <conio.h>

int old_tmode;

HWND    hwnd;
HDC     hdc;

COLORREF old_fcolor, old_bcolor;

void main (void)
{
  HDC hdc = GetDC(hwnd);
  old_fcolor = SetTextColor(hdc, RGB(0,255,0));
  old_bcolor = SetBkColor(hdc, RGB(0,0,0));
  old_tmode = SetBkMode(hdc, TRANSPARENT);
  TextOut(hdc, 20,30,"Hello world", strlen ("Hello world");
}

Mutta se tulostaa sen suoraan ruudulle ei ohjelma ikkunaan käytän kääntäjää visual c++ 6.0 ja kielenä c++.

Se on muuten int main(void)

teksturi [14.05.2004 14:59:12]

#

kyllä se minulla ainakin toimii void:lla.

kaviaari [14.05.2004 15:14:53]

#

Riippuu täysin haluaako paluuarvon vai ei, tuossa ei joten void on parempi.

Linkku [14.05.2004 16:57:16]

#

Jotkut kääntäjät ei vaan päästä voidia läpi.

mamaze [14.05.2004 17:03:29]

#

mutta ärsyttävin totuus tässä on se että aina on pakko tehdä windows-sovellus että voi tehdä jotain edistyneempää. Windows sovellukset ovat hiton vaikeita, samoin kun C - kieli.

kaviaari [15.05.2004 10:06:39]

#

Windows sovellukset ovat hyvinkin helppoja kun niitten kanssa vähän näpertelee

teksturi [16.05.2004 18:45:42]

#

Voisiko joku kertoa mikä on Windows sovellus tai näyttää.

hunajavohveli [16.05.2004 21:14:48]

#

teksturi kirjoitti:

Voisiko joku kertoa mikä on Windows sovellus tai näyttää.

No kai nyt olet Windows-käyttöjärjestelmän nähnyt? Windows-sovellukset ovat sovelluksia, jotka käyttävät pohjanaan Windowsia.

teksturi [17.05.2004 14:38:13]

#

Jaa en tullut ajatelleeksi, mutta miten teen sen.

kaviaari [17.05.2004 17:59:02]

#

Noh windows sovellus voisi olla esimerkiksi yksinkertainen ikkuna tähän malliin:

#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <math.h>

#define WINDOW_CLASS_NAME "WINCLASS1"


LRESULT CALLBACK WindowProc(HWND hwnd,
                            UINT msg,
                            WPARAM wparam,
                            LPARAM lparam)
{
    PAINTSTRUCT        ps;
    HDC             hdc;

    switch(msg)
    {
    case WM_CREATE:
        {

            return(0);
        }
    case WM_PAINT:
        {

            hdc=BeginPaint(hwnd,&ps);

            EndPaint(hwnd,&ps);

            return(0);
        }
    case WM_DESTROY:
        {

            PostQuitMessage(0);

            return(0);
        }

    default:break;
    }

    return (DefWindowProc(hwnd,msg,wparam,lparam));

}

int WINAPI WinMain(HINSTANCE hinstance,
                   HINSTANCE hprevinstance,
                   LPSTR lpcmdline,
                   int ncmdshow)
{
    WNDCLASSEX    winclass;
    HWND        hwnd;
    MSG            msg;

    winclass.cbSize = sizeof(WNDCLASSEX);
    winclass.style =CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc = WindowProc;
    winclass.cbClsExtra=0;
    winclass.cbWndExtra = 0;
    winclass.hInstance = hinstance;
    winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor = LoadCursor(NULL,IDC_ARROW);
    winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass.lpszMenuName = NULL;
    winclass.lpszClassName = WINDOW_CLASS_NAME;
    winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if (!RegisterClassEx(&winclass))
        return (0);

    if (!(hwnd =CreateWindowEx(NULL, WINDOW_CLASS_NAME,"Win32 ikkuna",WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0,0,400,400,NULL,NULL,hinstance,NULL)))
        return (0);

    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);

        DispatchMessage(&msg);

    }

    return(msg.wParam);

}

Ja sitten vähän yksinkertaisempi on tämä aina niin rakas messagebox:

#include <windows.h>
#include <windowsx.h>

int WINAPI WinMain(HINSTANCE hinstance,
         HINSTANCE hprevinstance,
         LPSTR lpcmdline,
         int ncmdshow)
{


MessageBox(NULL,"Teksti","Ilmoitus",MB_OK | MB_ICONINFORMATION);

return (0);

}

Jos haluat tietää lisää niin laita mulle sähköpostia tai ota yhteyttä kaviaari @ ircnet.

teksturi [18.05.2004 14:12:02]

#

Kiiti Kaviaari ylemmästä on apua, mutta alemman jo osasin olen yrittänyt tehdäkkin tuota, mutta en ole oikein onnistunut.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta