C++ a odkazovani, jak je to vlastně?

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Kompilátor tvrdí, že hInstance nebyla deklarována. Z jaké části hlavní funkce že ji mám zjistit?

Jinak jak jsem se tak koukal na ten RecEd, tak v něm se dá udělat celá vizuální stránka programu. Chápu to správně, že se v tomhle "nakreslí" vedlejší okno programu? Nebo se v něm dá udělat celý program?
Dialogy komunikují s hlavním oknem pouze přes proměnné ID_XXX?
díky
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

heh, možná dělám všechno uplně špatně...

v ResEdu si mám vytvořit nové okno, nebo začít jinak.

na msdn jsem nice našel spoustu příkazů na formátování a řazení tabulky, ale ne syntax, jak ji vytvořit, tak jestli bys mi sem plz nenapsal jednoduchy příklad 2x2 tabulky a jak se do ní vkládá řetězec.

jinak za vše díky
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

hInstance dostanes jako hThisInstance ve vstupni funkci programu (vetsinou pojmenovane jako Main nebo WinMain).
V ResEdu, pokud chces vytvorit dialogove okno, vytvoris novy projekt, das Project/Add dialog a potom tam uz jenom pridavas prvky, jake potrebujes. Je to v podstate WYSIWYG editor oken, pridas si tam tlacitka, texty a editboxy, nastavis jejich parametry a pak si to ulozis jako .rc soubor. Mel bych te jeste upozornit, ze ListView, TabView a podobne slozitejsi prvky nelze pouzit, jelikoz to nejsou zakladni soucasti oken a pri jejich pouziti ti program hned po spusteni spadne... Ty se pak musi vytvaret rucne.
Jinak na to MSDN jsi asi koukal spatne, jelikoz tady mas priklady vytvoreni tabulky, pridavani sloupcu i radku.
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Ještě malá otázečka:
kompilátor hlásí chybu s řádkem

Kód: Vybrat vše

icex.dwICC  = ICC_LISTVIEW_CLASSES;
jak to mam opravit plz?

Kód: Vybrat vše

typedef struct tagINITCOMMONCONTROLSEX {
    DWORD dwSize;
    DWORD dwICC;
} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;

void InitCommonControls(VOID);

HWND CreateListView (HWND hwndParent) 
{     
    RECT rcl; 
    INITCOMMONCONTROLSEX icex;
    
    // Ensure that the common control DLL is loaded. 
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC  = ICC_LISTVIEW_CLASSES; // chyba
    InitCommonControlsEx(&icex); 
    
    // Create the list-view window in report view with label editing enabled.
    GetClientRect (hwndParent, &rcl); 
    
    HWND hWndListView = CreateWindow(WC_LISTVIEW, 
                                "", 
                                WS_CHILD | LVS_REPORT | LVS_EDITLABELS, 
                                0, 
                                0, 
                                rcl.right - rcl.left, 
                                rcl.bottom - rcl.top, 
                                hwndParent, 
                                (HMENU)ID_LISTVIEW, 
                                hInst, 
                                NULL); 
                                
    return (hWndListView);
}
thx
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

To

Kód: Vybrat vše

typedef struct tagINITCOMMONCONTROLSEX { 
    DWORD dwSize; 
    DWORD dwICC; 
} INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX; 

void InitCommonControls(VOID);
bys ve svem programu nemel mit, to uz je definovano v hlavickach Windows.
Co se toho listu tyce, tak nahrad cele tohle

Kód: Vybrat vše

    INITCOMMONCONTROLSEX icex; 
    
    // Ensure that the common control DLL is loaded. 
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX); 
    icex.dwICC  = ICC_LISTVIEW_CLASSES; // chyba 
    InitCommonControlsEx(&icex); 
   
timhle

Kód: Vybrat vše

InitCommonControls();
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

diky

problem se posunul dal

Kód: Vybrat vše

    HWND hWndListView = CreateWindow(WC_LISTVIEW, 
                                "", 
                                WS_CHILD | LVS_REPORT | LVS_EDITLABELS, 
                                0, 
                                0, 
                                rcl.right - rcl.left, 
                                rcl.bottom - rcl.top, 
                                hwndParent, 
                                (HMENU)ID_LISTVIEW, 
                                hInst, 
                                NULL); 
                                
    return (hWndListView);
}
In function `HWND__* CreateListView(HWND__*)':
`WC_LISTVIEW' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
`LVS_REPORT' undeclared (first use this function)
`LVS_EDITLABELS' undeclared (first use this function)
`ID_LISTVIEW' undeclared (first use this function)
`hInst' undeclared (first use this function)
[Build Error] [Test.o] Error 1

nemam neco specialniho includovat?
na MSDN o deklaraci nic nepsali
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

Jsem zapomnel, musis includovat <commctrl.h> :oops:
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

thx, uz to jenom chce deklaraci hInst

když si do zavorky pripisu ", HINSTANCE hInst", tak to vyhodí build error

Kód: Vybrat vše

 HWND CreateListView (HWND hwndParent/*, HINSTANCE hInst*/) 
{     
    RECT rcl; 
InitCommonControls();
    
    GetClientRect (hwndParent, &rcl); 
    
    HWND hWndListView = CreateWindow(WC_LISTVIEW, 
                                "", 
                                WS_CHILD | LVS_REPORT | LVS_EDITLABELS, 
                                0, 
                                0, 
                                rcl.right - rcl.left, 
                                rcl.bottom - rcl.top, 
                                hwndParent, 
                                (HMENU)ID_LISTVIEW, 
                                hInst, 
                                NULL); 
                                
    return (hWndListView);
}
pak bych se chtel zeptat, jestli se dá jednoduše říct strstr(*,*), aby nerozlišoval velká a malá písmena.
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

HINSTANCE hInst by melo jit, pokud se ti to nekrizi s predchozi deklaraci te funkce (tzn. nekde nahore v programu mas deklaraci a az dale v kodu definujes vlastni funkci), co to hlasi za chybu?

strstr nemuzes primo rict, aby rozlisovala velka a mala pismena. Moznosti je projit retezec po jednotlivych znacich a pomoci funkci tolower() a toupper() prevest cely text bud na velka nebo na mala pismena a ten nasledne porovnavat... Nejsem si ale jisty, zda to bude fungovat i pro ceske znaky typu ěščř...
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

neni chyba, ze predchazejici text mam napsany tesne PŘED
"LRESULTS CALLBACK" před MainWndProc?

chyba

Test.o(.text+0x3be5) In function `Z14CreateListViewP6HWND(HINSTANCE__ *)':
[Linker error] undefined reference to `InitCommonControls@0'
Test.o(.text+0x3be5) ld returned 1 exit status
Makefile.win [Build Error] [WinTest.exe] Error 1

jinak jako v notepadu, wordu apod se při vyhledávání v textu rozlišování písmen dělá taky takhle komplikovaně? Nemaj na to nějakou knihovnu?
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

To je chyba linkeru, musis v parametrech projektu pridat link na libcomctl32.a (najdes ve slozce lib)
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

ok

jak to mám zavolat? když to se všim všudy přetáhnu do hwndMainProc za WM_CREATE, vyhodí to chybu, když to přetáhnu samotné, chybí deklarace hInstance.

Kód: Vybrat vše

HWND CreateListView(HWND hwnd, HINSTANCE hInst);
Tohle jsem zkoušel zapsat do WM_CREATE, nevyhodi to chybu, program se spustí, ale nikde tam neni vidět mřížka. hwndParent jsemzměnl n hwnd.

Diky
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

Nemuzes psat HWND CreateListView(), kdyz tu funkci chces zavolat, tvari se to potom jako deklarace, staci CreateListView(). Jinak te musim upozornit, ze samotne vytvoreni okna jeste neznamena, ze uvidis tabuku. Dokud tam pri nejmensim nepridas sloupce, uvidis nanejvys bilou plochu.
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

no, tak tabulku jsem odložil na později, ale teď mě spíš začal zajímat trackbar; na MSDN jsem ho našel, ale jeho vytvořeni bylo podobně dlouhé, jako u tabulky.

Nedá se udělat jednodušším způsobem?
Díky
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

Bohuzel nejde, alespon tedy v DevC++ bez pouziti nejake GUI knihovny (jako WxWidgets). V DevC++ musis vsechno napsat v kodu pomoci WinApi. Docela pekny clanek o tom najdes tady na Builder.cz
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Dá se nějak přes nějakou knihovnu nebo "prostě nějak" nasát do programu text ze souboru s koncovkou *.doc? fakt bych to potřeboval.
Díkec
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

a ješte nechybí mi tady nějakej údaj, kterej je důležitej pro překreslování při změně editboxu, případně pro podporu UpdateWindow(hwnd);

Kód: Vybrat vše

/* All windows of this class redraw when resized. */
wndclass.style = CS_HREDRAW | CS_VREDRAW;
Díky
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

Coburn píše:Dá se nějak přes nějakou knihovnu nebo "prostě nějak" nasát do programu text ze souboru s koncovkou *.doc? fakt bych to potřeboval.
Díkec
O zadnem jednoduchem zpusobu nevim...

Co se tyce toho editboxu, tak myslim, ze nic nechybi
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

heh
a je tady nějaká chyba na ten způsob?

Kód: Vybrat vše

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps);
GetClientRect (hwnd, &rc);

rc.bottom = rc.bottom*2-9;

DrawText (hdc, "Text", -1, &rc,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint (hwnd, &ps);
break;
Tohle je příklad, jak se v mém proramu vytváří text, nevim, kde může být chyba

Díky
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

A nebylo by lepsi misto rucniho psani textu pouzit Static control, ktery jenom umistis do dialogu a pomoci SetDlgItemText mu nastavis pozadovany text? V tom tvem kodu bych zkusil odebrat to rc.bottom = rc.bottom*2-9; a do DrawText pridat parametr DT_NOCLIP.
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Odpovědět

Zpět na „Programování a web“