[ Príspevkov: 5 ] 
AutorSpráva
Offline

Zmazaný užívateľ
Zmazaný užívateľ
Obrázok užívateľa
NapísalOffline : 04.03.2014 18:49 | C - GetConsoleWndHandle Chyba

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 | 3
NapísalOffline : 04.03.2014 19:33 | C - GetConsoleWndHandle Chyba

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
Napísal autor témyOffline : 04.03.2014 22:07 | C - GetConsoleWndHandle Chyba

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 | 3
NapísalOffline : 05.03.2014 8:44 | C - GetConsoleWndHandle Chyba

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 | 7
Bydlisko: Presov
NapísalOffline : 05.03.2014 8:58 | C - GetConsoleWndHandle Chyba

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


 [ Príspevkov: 5 ] 


C - GetConsoleWndHandle Chyba



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

1489

29.05.2019 11:48

Jaro_N

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

2908

26.02.2011 11:36

000kiko000

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

Chyba

v PHP, ASP

3

681

02.07.2008 18:25

arno

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

CHYBA

v Operačné systémy Microsoft

7

892

16.03.2007 17:49

quatermain

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

Chyba

v Redakčné systémy

1

1067

20.08.2006 15:39

scooby

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

Chyba

v Operačné systémy Microsoft

19

1492

12.08.2007 20:06

SpOxPeR

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

chyba

v Operačné systémy Microsoft

6

933

13.06.2008 12:19

Daron

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

chyba

v Správy pre vedenie fóra

8

1300

24.07.2008 7:54

Tominator

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

Chyba?

v Redakčné systémy

3

1267

24.05.2006 22:18

raven

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

chyba

v Operačné systémy Microsoft

2

773

21.07.2008 22:34

Kosak

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

chyba

v PHP, ASP

2

1029

25.02.2008 20:05

Tominator

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

Chyba

v Ostatné

2

769

26.04.2009 8:04

Caliente

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

Chyba

v Ostatné

4

760

24.05.2012 20:13

bartSK

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

chyba?

v Audio programy

10

460

30.08.2014 20:15

Marcoso

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

Chyba?

v Správy pre vedenie fóra

2

1230

28.05.2008 19:38

Tominator

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

chyba ?

v PHP, ASP

1

721

07.05.2009 22:10

lio



© 2005 - 2025 PCforum, edited by JanoF