Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 5 ] 
AutorSpráva
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok NapísalOffline : 04.03.2014 18:49

Dobrý deň
Mám takýto kód:
Kód:

#include <stdio.h>
#include <windows.h>               // Win32API Header File

#define Red  RGB (255,0,0)         // definicia vlastnych farieb (Red+Green+Blue)
#define Lime RGB (206,255,0)
#define Blue RGB (0,0,255)

                                   // nasleduje deklaracia troch funkcii, ktore
                                   // budeme pouzivat, definica na konci programu 

int     BCX_Line (HWND,int,int,int,int,int,HDC);   // kresli ciaru
int     BCX_Circle (HWND,int,int,int,int,int,HDC); // kresli kruznicu
HWND    GetConsoleWndHandle (void);                // ziska handle na okno     


/* ************************************************************************** */
/*                                                                            */
/*  Tu zacina hlavny program                                                  */
/*                                                                            */
/* ************************************************************************** */

int main(int argc, char *argv[])
{

    static HWND    hConWnd;             
    hConWnd = GetConsoleWndHandle();                // ziskanie handle na okno

    // tu zacina priestor pre vasu tvorivost:
   
         BCX_Circle(hConWnd, 150, 130, 105, Blue,0,0);
         BCX_Line(hConWnd, 5, 5, 800, 600, Red,0);
         BCX_Line(hConWnd, 295, 5, 5, 250, Lime,0);

    scanf("?");    // na konci pockame na ENTER, aby obrazok hned nezmizol...
    return 0;
}

/* ************************************************************************** */
/*                                                                            */
/*  Nasleduju definicie funkcii, nepredpoklada sa, ze by ste tu cokolvek      */
/*  menili, ale nie je to zakazane, mozete tak docielit mnohe zaujimave       */
/*  efekty...                                                                 */
/*                                                                            */
/* ************************************************************************** */

/* ************************************************************************** */
/*                                                                            */
/*  Funkcia BCX_Line                                                          */
/*                                                                            */
/*            HWND Wnd : handle okna                                          */
/*          int x1, y1 : suradnice pociatocneho bodu                          */
/*          int x2, y2 : suradnice koncoveho bodu                             */
/*             int Pen : farba                                                */
/*         HDC DrawHDC : kontext zariadenia                                   */
/*                                                                            */
/*    Funkcia nakresli ciaru z bodu [x1,y1] do bodu [x2,y2] farbou Pen.       */
/*                                                                            */
/* ************************************************************************** */

int BCX_Line (HWND Wnd,int x1,int y1,int x2,int y2,int Pen,HDC DrawHDC)
{       
        int a,b=0;
        HPEN hOPen;
       
        HPEN hNPen = CreatePen(PS_SOLID, 2, Pen); // penstyle, width, color
        if (!DrawHDC)
             DrawHDC = GetDC(Wnd), b = 1;
        hOPen = (HPEN)SelectObject(DrawHDC, hNPen);
       
        MoveToEx(DrawHDC, x1, y1, NULL); // starting point of line
        a = LineTo(DrawHDC, x2, y2);     // ending point of line
       
        DeleteObject(SelectObject(DrawHDC,hOPen));
        if (b) ReleaseDC(Wnd, DrawHDC);
        return a;
}

/* ************************************************************************** */
/*                                                                            */
/*  Funkcia BCX_Circle                                                        */
/*                                                                            */
/*            HWND Wnd : handle okna                                          */
/*            int X, Y : suradnice stredu kruznice                            */
/*               int R : polomer                                              */
/*             int Pen : farba                                                */
/*            int Fill : vypln                                                */
/*         HDC DrawHDC : kontext zariadenia                                   */
/*                                                                            */
/*    Funkcia nakresli kruznicu so stredom [X,Y], polomerom R farbou Pen.     */
/*                                                                            */
/*    Kruznicu kresli pomocou WinApi funkcie na kreslenie elipsy              */
/*    zadanej ohranicujucim obdlznikom so suradnicami laveho horneho          */
/*    a praveho dolneho rohu.
/*                                                                            */
/* ************************************************************************** */

int BCX_Circle(HWND Wnd,int X,int Y,int R,int Pen,int Fill,HDC DrawHDC)
{
        int a, b = 0;
        if (!DrawHDC) DrawHDC = GetDC(Wnd), b = 1;

        HPEN   hNPen = CreatePen(PS_SOLID, 2, Pen);    // penstyle, width, color
        HPEN   hOPen = (HPEN)SelectObject(DrawHDC, hNPen);
        HBRUSH hOldBrush;
        HBRUSH hNewBrush;
       
        if (Fill)                      // if true will fill circle with pencolor
        {
                hNewBrush = CreateSolidBrush(Pen);
                hOldBrush = (HBRUSH)SelectObject(DrawHDC, hNewBrush);
        }
        else                           // else just draw circle
        {
                hNewBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
                hOldBrush = (HBRUSH)SelectObject(DrawHDC, hNewBrush);
        }

        a = Ellipse(DrawHDC, X-R, Y+R, X+R, Y-R);

        DeleteObject(SelectObject(DrawHDC, hOPen));
        DeleteObject(SelectObject(DrawHDC, hOldBrush));
        if (b) ReleaseDC(Wnd, DrawHDC);
        return a;
}


/* ************************************************************************** */
/*                                                                            */
/*  Funkcia GetConsoleWndHandle(void)                                         */
/*                                                                            */
/* ************************************************************************** */
// the hoop ...

HWND GetConsoleWndHandle(void)
{
        HWND hConWnd;

        OSVERSIONINFO os;
        char szTempTitle[64], szClassName[128], szOriginalTitle[1024];

        os.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
        GetVersionEx( &os );
        // may not work on WIN9x
        if ( os.dwPlatformId == VER_PLATFORM_WIN32s ) return 0;

        GetConsoleTitle( szOriginalTitle, sizeof( szOriginalTitle ) );
        sprintf( szTempTitle,"%u - %u", GetTickCount(), GetCurrentProcessId() );
        SetConsoleTitle( szTempTitle );
        Sleep( 40 );

        // handle for NT
        hConWnd = FindWindow( NULL, szTempTitle );
        SetConsoleTitle( szOriginalTitle );

        // may not work on WIN9x
        if ( os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
        {
                hConWnd = GetWindow( hConWnd, GW_CHILD );
                if ( hConWnd == NULL )  return 0;
                GetClassName( hConWnd, szClassName, sizeof ( szClassName ) );
                while ( strcmp( szClassName, "ttyGrab" ) != 0 )
                {
                        hConWnd = GetNextWindow( hConWnd, GW_HWNDNEXT );
                        if ( hConWnd == NULL )  return 0;
                        GetClassName( hConWnd, szClassName, sizeof( szClassName ) );
                }
        }

        return hConWnd;
}


a nasledujúci problém :

C - GetConsoleWndHandle Chyba

Viem mi niekto poradiť nejaké riešenie ?

Ďakujem


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 04.03.2014 19:33

Tá chybová hláška je dosť konkrétna :)
Proste nemôžeš používať typ char* tam, kde sa očakáva typ LPWSTR. Takže tie premenné deklaruj s týmto typom.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
Príspevok Napísal autor témyOffline : 04.03.2014 22:07

nefunguje :/


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 05.03.2014 8:44

Ukáž :P







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.07.11
Prihlásený: 09.03.16
Príspevky: 42
Témy: 7
Bydlisko: Presov
Príspevok NapísalOffline : 05.03.2014 8:58

Necital som cely kod, nechce sa mi ale ta chyba spociva v tom ze mas v nastaveni projektu zadane "Use Unicode Character Set" to znamena ze funkcie definovane vo Windows.h budu vyzadovat wide char:

Mozes si to zmenit alebo pouzivat takto:
1. Ak davas len cisto text, ako napríklad: "Windows" tak pouzi L"Windows"
2. nepouzivaj char ale wchar_t

PS: Pises ze je to program v C, ale ak robis pod VS a nepremenujes si svoj subor Grafika_3.cpp na Grafika_3.c tak VS bude pouzivat C++ kompilator


Odpovedať na tému [ Príspevkov: 5 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Častá chyba načítania stránky (...dočasná chyba DNS).

v Poskytovatelia internetu

14

1330

29.05.2019 11:48

Jaro_N Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba 101 (net::ERR_CONNECTION_RESET): Neznáma chyba.

v Sieťové a internetové programy

0

2812

26.02.2011 11:36

000kiko000 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba?

v Redakčné systémy

3

1204

24.05.2006 22:18

raven Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba

v Operačné systémy Microsoft

2

726

21.07.2008 22:34

Kosak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba

v PHP, ASP

2

969

25.02.2008 20:05

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba

v Ostatné

2

725

26.04.2009 8:04

Caliente Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba?

v Správy pre vedenie fóra

2

1186

28.05.2008 19:38

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba ?

v PHP, ASP

1

689

07.05.2009 22:10

lio Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba

v Operačné systémy Microsoft

2

651

26.02.2008 19:00

zilooo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba

v Operačné systémy Microsoft

2

603

15.05.2008 14:55

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba?

v Pevné disky a radiče

2

784

16.02.2008 12:14

Iqwak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba

v PHP, ASP

17

1100

18.09.2008 6:55

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba

v PHP, ASP

3

645

02.07.2008 18:25

arno Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. CHYBA

v Operačné systémy Microsoft

7

851

16.03.2007 17:49

quatermain Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba

v Operačné systémy Microsoft

19

1443

12.08.2007 20:06

SpOxPeR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba

v Ostatné

4

720

24.05.2012 20:13

bartSK Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra