[VB6&C++] Listview IDL/TLB?

Pagina: 1
Acties:

  • Devion
  • Registratie: Januari 2000
  • Laatst online: 21-05 14:58

Devion

Space for rent ;-)

Topicstarter
Ik ben bezig om een usercontrol van de listview te maken (omdat hier heel wat extras omheen komt te hangen), Probleem is alleen dat ik tussen de listitems functies moet gaan zitten.

.add / .remove / .etc etc

Met de IDL is dit mogelijk alleen is mijn kennis van C++ minimaal, dus mijn vraag is weet iemand wat hieronder moet komen staan ipv IDispatch** ? Want nu doet hij het wel maar heb ik objects ipv listitem & listitems

De reden waarom ik trouwens een IDL heb gepakt is het feit dat ik nu de array 0 als listitems set en de rest als listitem.

De IDL zoals hij nu is:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[
 uuid(55D6A3D1-2BC0-11d4-932E-0060973B1985),
 version(1.0),
 helpstring ("CollectionHelper")
]

    // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("STDOLE2.TLB");

[
  odl,
  uuid(55D6A3D2-2BC0-11d4-932E-0060973B1985),
  version(1.0),
  hidden,
  dual,
  nonextensible,
  oleautomation
]
    
    interface ICollectionHelper : IDispatch {
        [id(DISPID_VALUE), propget]
        HRESULT Item([in, out] VARIANT* Index, [out, retval] IDispatch**);

    [id(0x68030002), propget]
        HRESULT Count([out, retval] long* );

    [id(DISPID_NEWENUM), propget, hidden]
    HRESULT NewEnum([out, retval] IDispatch**);

    HRESULT Item(
    [in] VARIANT Index,
    [out, retval] IDispatch** pval);

    [id(0x60030000)]
    HRESULT Add(
    [in] VARIANT * Item,
    [in, optional] VARIANT Index,
    [in, optional] VARIANT Key,
    [in, optional] VARIANT Text,
    [in, optional] VARIANT Icon,
    [in, optional] VARIANT SmallIcon,
    [out, retval] IDispatch** pval);

    [id(0x60030002)]
    HRESULT Remove([in] VARIANT Index);
    };
    
    };

    [
      uuid(55D6A3D3-2BC0-11d4-932E-0060973B1985),
      version(1.0),
      noncreatable
    ]
    coclass CollectionHelper {
        [default] interface ICollectionHelper;
    };

  • Devion
  • Registratie: Januari 2000
  • Laatst online: 21-05 14:58

Devion

Space for rent ;-)

Topicstarter
Paar dingetjes nog:

1) De code zal niet compileren op dit moment, zie nu net dat ik een tijdelijke idl had gepakt (moet dus pval bij verschillende IDispatch** erbij)

2) De IDL werkt op zich, alleen kan ik er dus op dit moment niks mee omdat de objecten listitem & listitems moeten zijn (en eigenlijk ook voor Columnheader & Columnheaders). Het hoofdobject is dus een listview (ComCtl32)

Als iemand nog iets weet om de code wat te optimaliseren, tips en ideeën ontvang ik graag :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Stapel troep verwijderd, inclusief de user. Back on-topic :)

Professionele website nodig?


  • Devion
  • Registratie: Januari 2000
  • Laatst online: 21-05 14:58

Devion

Space for rent ;-)

Topicstarter
Ik ga er maar vanuit dat niemand hier het antwoord op weet?

Time for plan B :)

  • Devion
  • Registratie: Januari 2000
  • Laatst online: 21-05 14:58

Devion

Space for rent ;-)

Topicstarter
Opgelost!

Het blijkt dat je helemaal geen IDL nodig hebt in VB om een listview te imiteren (:x), Voor de mensen die dus ook aan het zoeken zijn (wat er blijkbaar weinig zijn gezien het aantal posts in deze thread)..

Klik op de procedure waarvan je hem als default van een class wilt hebben en click op Tools -> Procedure Attributes -> Advanced knop en daarna (Default) selecteren bij Procedure ID:

Nu heb je dus ClassNaam.(alle functies binnen de class) en ClassNaam(xx). de functie die je als (default) hebt staan.

Success voor iedereen die hier ook mee aan de gang gaat :)