Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Pointer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
29.11.2003, 18:37 Uhr
derphilipder



War falsch - habs editiert

GetClientRect(hwnd, &(StrPointer->rect));
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"

Dieser Post wurde am 29.11.2003 um 18:38 Uhr von derphilipder editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
29.11.2003, 18:40 Uhr
niels_ole_salscheider



Das hab' ich selbst schon ausprobiert... Da sagt der immer: error LNK2001: Nichtaufgelöstes externes Symbol "public: static struct tagRECT ControlClass::rect" (?rect@ControlClass@@2UtagRECT@@A)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
29.11.2003, 19:46 Uhr
niels_ole_salscheider



Was soll das eigentlich heißen, Nichtaufgelöstes externes Symbol?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
29.11.2003, 20:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das heisst das du nen problem mit deinem linker hast
musst wahrscheinlich deinem projekt noch ne lib oder *.cpp hinzufügen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
29.11.2003, 21:03 Uhr
niels_ole_salscheider



OK, aber welche LIB muss ich beim VC.NET 2003 noch hinzufügen, damit ich das mit den Pointern machen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
29.11.2003, 21:06 Uhr
Pablo
Supertux
(Operator)


das hat langsam nichts mehr mit ANSI zu tun -->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
29.11.2003, 21:38 Uhr
0xdeadbeef
Gott
(Operator)


Nein, nein, nein. Das hat damit nichts zu tun. Wenn rect statisch deklariert ist, muss es in der .cpp explizit initialisiert werden. Also:

C++:
//.h

class ControlClass {
public:
  static RECT rect;
}

//.cpp
RECT ControlClass::rect(0, 0, 100, 100); //initialisieren. Werte können anders sein


Ansonsten bindet -> stärker als &, also ist &StrPointer->rect schon in Ordnung. Allerdings ginge in diesem Fall auch einfach &ControlClass::rect, weil das Ding ja statisch ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
29.11.2003, 21:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das problem sind nicht die pointer
dein quellcode scheint (syntaktisch zumindest) io zu sein.
Der compiler frisst ihn ja. nur der Linker hat das problem er kann das problem

um dir mal ein beispiel zu geben bei dem du ein linker problem hast...

C++:
//test.h
void myfunktion(int);




C++:
#include "test.h"
int main (){
myfunktion(10);
return 0;
}



in diesem fall frisst der compiler das weil er davon ausgeht das es die funktion myfunktion gibt, denn der funktionsprototyp steht in test.h die du ja includierst.

Das problem hat jetzt der Linker weil er keine "Implementation" zu dieser funktion findet.

Du musst jetzt quasi die *lib oder*.cpp oder was auch immer finden in der das nicht aufgelöste symbol zu finden ist damit der linker in der lage ist eine ausführbare datei zu erstellen. Wie die in deinem fall heisst kann ich dir leider auch nicht sagen


[Edit:] ach daher weht der wind.
dann nehm ich natürlich alles zurück da beefy sich der sache angenommen hat..
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 29.11.2003 um 21:41 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
29.11.2003, 22:29 Uhr
niels_ole_salscheider




Zitat:
0xdeadbeef postete
Nein, nein, nein. Das hat damit nichts zu tun. Wenn rect statisch deklariert ist, muss es in der .cpp explizit initialisiert werden. Also:

C++:
//.h

class ControlClass {
public:
  static RECT rect;
}

//.cpp
RECT ControlClass::rect(0, 0, 100, 100); //initialisieren. Werte können anders sein


Ansonsten bindet -> stärker als &, also ist &StrPointer->rect schon in Ordnung. Allerdings ginge in diesem Fall auch einfach &ControlClass::rect, weil das Ding ja statisch ist.


Klappt irgendwie nicht ganz... Ich poste mal den Code:


C++:
struct ControlClass
{
    static TCHAR text[200];
    PAINTSTRUCT ps;
    HDC hdc;
    static LOGFONT Unterstrichen;
    static HFONT hUnterstrichen;
    static BOOL aktiv;
    static HPEN pen;
    static RECT rect;
    static TEXTMETRIC tm;
};
.
.
.
LRESULT CALLBACK LinkProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    ControlClass *CC = (ControlClass*) GetWindowLong(hwnd, GWL_USERDATA);
    switch(message)
    {
    case WM_CREATE:
        CC = new ControlClass;
        SetWindowLong(hwnd, GWL_USERDATA, (long) CC);
.
.
.



PS: Das ganze soll mal ein eigenes Steuerelement werden...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
29.11.2003, 23:47 Uhr
0xdeadbeef
Gott
(Operator)


Ich verstehe irgendwie nicht, warum der ganze Kram static ist sein soll. Außerdem sieht mir ControlClass nach einer eigenen Klasse aus, von daher ist dein Cast nicht in Ordnung. Was soll der Code denn bewirken?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: