Problema programma vc++ con inserimento ocx

giovedì 16 aprile 2009 - 16.24

chira Profilo | Newbie

buongiorno,
ho un grosso problema :(

ho un programma in visual c++ che funziona correttamente al cui interno in una dialog principale ho inserito un ocx (fatto in vb6) creando la rispettiva classe e fin qui tutto bene. se uso i metodi dell'ocx all'interno del dialog in cui l'ho messo funziona correttamente ma se provo a "richiamarlo" da un'altra classe sia chiamando la classe del ocx sia chiamando la dialog in cui ho inserito l'ocx mi da violazione d'accesso e non so che fare.

provo a spiegare più nel dettaglio.

ho la mia diaolog Profili che ha la sua classe CProfili. qui inserisco l'ocx a cui viene associata la sua classe C_control. quindi nelle dichiarazioni della classe Profili associo una variabile di classe C_control cosi: C_Control m_OpcControl;( questo tramite wizard)

il mio ocx ha x es una funzione connessione.

se all'interno dei profili chiamo la funzione OpcControl.Connessione funziona perfettamente.

vado in un 'altra classa (non un dialog)

dichiaro una variabile di classe C_control e una di classe Profili

C_Control* TestOpc1;
CProfili* TestOpc;

provo in entrambi i casi a richiamare la funzione connessione

TestOpc->Connessione

TestOpc1->Connessione

niente errore.

ho anche provato a fare una funzione interna a CProfili chiamata leggi al cui interno richiama la mia connessione (visto che "localmente2 all'interno di CProfili) funziona ma anche in questo caso nn va dando sempre la stessa eccezione.

metto anche la call stack; questo è il caso in cui dalla classe chiamo la dialog Profili e chiamo la funzione LeggiRead al cui interno c'è il controllo ocx che chiama la connessione:

CWnd::InvokeHelper(CWnd * const 0xccccdbb8 {CWnd hWnd=???}, long 1610809351, unsigned short 1, unsigned short 0, void * 0x00000000) line 345 + 3 bytes
C_Control::connessione() line 23 + 22 bytes
CProfili::LeggiRead(short * 0x03bdfdd4, short * 0x03bdfdd4) line 3661
ScritturaSu(void * 0x02190068) line 2764 + 32 bytes
_AfxThreadEntry(void * 0x0012e324) line 112 + 13 bytes
_threadstartex(void * 0x01acb1d0) line 227 + 13 bytes
KERNEL32! 7c80b50b()

p.s in alcuni casi mi da questo CWnd * const 0xccccdbb8 {CWnd hWnd=???},
quando invece genero la variabile associata alla classe utilizzando un =new cioè cosi
CProfili* TestOpc = new CProfili;
allora la call stack diventa CWnd hWnd=0x00000000,

vi prego aiutatemi nn so + che fare!!!!
ancora grazie in anticipo..
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5