Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: FAQ - WinAPI ::  ActiveX  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Endy
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2001
Beiträge: 790
Beitrag Endy Mitglied 22:46:00 08.10.2001   Titel:   ActiveX            Zitieren

Also von zeit zu zeit muss ich diesen post mal wieder bringen:
Wie kann man ActiveX elemente mit der WinAPI verwenden?
gibt es ein Tutorial dazu?

Ich befürchte zwar das dieser Post unbeantwortet bleibt aber die hoffnung, das zufällig mal jemand vorbei kommt der es weiß...
naja...
(ich habe diesen Post schon 2 oder 3 mal gebraucht und bei Fragen von anderen auch nachgefragt aber es kam leider nicht)
[img]images/smiles/icon_sad.gif[/img] *heul* [img]images/smiles/icon_sad.gif[/img] *heul*

Fals ihr ein genaues steuerelement wissen wollt: FlexGrid

biiiiiiitttee [img]images/smiles/icon_sad.gif[/img]
wenigstens ein hilfreiches stichwort!!! oder ein beispiel programm irgendwas: der kleinstehinweiß is schon hilfreich!!
thx
ciaoy

>> Endy <<
Werbeunterbrechung
King
Unregistrierter




Beitrag King Unregistrierter 23:11:00 08.10.2001   Titel:              Zitieren

ActiveX hat im Prinzip mit API nichts zu tun. Da mußt Du Dich mit COM auskennen. Das kann man natürlich auch zu Fuß machen, ist aber mehr als umständlich.

Du kannst Deine Container aber Prima mit der ATL erstellen. Damit erstellt sich das Control dann auch einfach per CreateWindow. Trotzdem behältst Du alle Möglichkeiten zu Fuß einzugreifen.

Aber auch im Umgang mit der ATL sind COM-Kenntnisse erforderlich, IMO.
Endy
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2001
Beiträge: 790
Beitrag Endy Mitglied 00:23:00 09.10.2001   Titel:              Zitieren

ok gibts zu ATL ein Tutorial oder irgendwas, was kein Geld kostet [img]images/smiles/icon_wink.gif[/img]

naja und was Com angeht: naja also ein paar grobe grundlagen kenn ich ja... (ich hab mal ein DX ANGEFANGEN... naja da stand ein bischen was)

aber das mit ATL hört sich seeeeeehr interessant an... [img]images/smiles/icon_biggrin.gif[/img]
hast du ein BSP? (ich glaube damit werde ich schon zurecjt kommen)

Ein Großes Problem in Bezug auf Active und ATL und dergleichen is, das in der MSDN eigendlich nur sachen zu MFC beschrieben sind [img]images/smiles/icon_sad.gif[/img] und nix von WinAPI... [img]images/smiles/icon_sad.gif[/img]
thx

>> Endy <<

@King: *jipi* endlich antwortet jemand *juhu*froi*
King
Unregistrierter




Beitrag King Unregistrierter 13:04:00 09.10.2001   Titel:              Zitieren

Tja, Tutorials zum Thema kenn ich leider nicht. Ich hab hier das Buch Inside ATL von MSPRESS, damit bin ich eigentlich ganz zufrieden.

Ein Beispiel hab ich mal zusammengestellt. Es lädt Dir ganz einfach ein .pdf und zeigt es Dir an (wenn die Datei gefunden wird, versteht sich). Hoffentlich nimmt mir keiner übel, daß ich hier sowas langes poste.
C/C++ 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <windows.h>
#include
<tchar.h>

// link in AltAxWinInit() & containment code statically
// this require a instance (_Module) of CComModule

#include
<atlbase.h>

CComModule _Module;

#include
<atlcom.h>
#include
<atlhost.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


static const OLECHAR* pszFileName = OLESTR("d:\\acrobat.pdf");
static const LPTSTR   pszAppName  = TEXT("AcrobatReaderTest");


int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int nCmdShow)
{
  WNDCLASSEX wc;
  HWND       hWnd;
  MSG        msg;

    // ATL initialisieren
    _Module.Init(NULL, hInstance);
    AtlAxWinInit();

    wc.cbSize        = sizeof(wc);
    wc.style         = 0;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = pszAppName;
    wc.hIconSm       = wc.hIcon;

    RegisterClassEx(&wc);

    hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, wc.lpszClassName,
                          wc.lpszClassName, WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage (&msg);
    }

    // ATL deinitialisieren
    AtlAxWinTerm();
    _Module.Term();

  return(msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  PAINTSTRUCT ps;
  OLECHAR     szCLSID[64];
  CLSID       clsid;
  HWND        hWndPdf;
 
    switch(uMsg)
    {
        case WM_CREATE:
             StringFromGUID2(clsid, szCLSID, 64);
             hWndPdf = CreateWindowEx(0, TEXT("AtlAxWin"),
                                TEXT("{CA8A9780-280D-11CF-A24D-444553540000}"),
                                WS_CHILD | WS_VISIBLE, 0, 0, 0,
                                0, hWnd, NULL,
                                ((CREATESTRUCT*)lParam)->hInstance, NULL);

             if(IsWindow(hWndPdf))
             {
                 IUnknown* pUnk = NULL;
                 AtlAxGetControl(hWndPdf, &pUnk);

                 BSTR bstrFile = SysAllocString(pszFileName);

                 VARIANTARG var;
                 VariantInit(&var);
                 var.vt      = VT_BSTR;
                 var.bstrVal = bstrFile;

                 CComDispatchDriver pDisp(pUnk);
                 pDisp.PutPropertyByName(OLESTR("src"), &var);

                 VariantClear(&var);
                 pUnk->Release();
             }
             return(0);
        case WM_PAINT:
             BeginPaint(hWnd, &ps);
             EndPaint(hWnd, &ps);
             return(0);
        case WM_ERASEBKGND:
             return(1);
        case WM_SIZE:
             if(NULL != (hWndPdf = GetWindow(hWnd, GW_CHILD)))            
                 MoveWindow(hWndPdf, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
             return(0);
        case WM_CLOSE:
             DestroyWindow(hWnd);
             return(0);
        case WM_NCDESTROY:    
             PostQuitMessage(0);
             return(0);
    }
  return(DefWindowProc(hWnd, uMsg, wParam, lParam));
}
C/C++ 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <windows.h>
#include
<tchar.h>

// link in AltAxWinInit() & containment code statically
// this require a instance (_Module) of CComModule

#include
<atlbase.h>

CComModule _Module;

#include
<atlcom.h>
#include
<atlhost.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


static const OLECHAR* pszFileName = OLESTR("d:\\acrobat.pdf");
static const LPTSTR pszAppName = TEXT("AcrobatReaderTest");


int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int nCmdShow)
{
WNDCLASSEX wc;
HWND hWnd;
MSG msg;

// ATL initialisieren
_Module.Init(NULL, hInstance);
AtlAxWinInit();

wc.cbSize = sizeof(wc);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = pszAppName;
wc.hIconSm = wc.hIcon;

RegisterClassEx(&wc);

hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, wc.lpszClassName,
wc.lpszClassName, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage (&msg);
}

// ATL deinitialisieren
AtlAxWinTerm();
_Module.Term();

return(msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
OLECHAR szCLSID[64];
CLSID clsid;
HWND hWndPdf;

switch(uMsg)
{
case WM_CREATE:
StringFromGUID2(clsid, szCLSID, 64);
hWndPdf = CreateWindowEx(0, TEXT("AtlAxWin"),
TEXT("{CA8A9780-280D-11CF-A24D-444553540000}"),
WS_CHILD | WS_VISIBLE, 0, 0, 0,
0, hWnd, NULL,
((CREATESTRUCT*)lParam)->hInstance, NULL);

if(IsWindow(hWndPdf))
{
IUnknown* pUnk = NULL;
AtlAxGetControl(hWndPdf, &pUnk);

BSTR bstrFile = SysAllocString(pszFileName);

VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);
pUnk->Release();
}
return(0);
case WM_PAINT:
BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
return(0);
case WM_ERASEBKGND:
return(1);
case WM_SIZE:
if(NULL != (hWndPdf = GetWindow(hWnd, GW_CHILD)))
MoveWindow(hWndPdf, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
return(0);
case WM_CLOSE:
DestroyWindow(hWnd);
return(0);
case WM_NCDESTROY:
PostQuitMessage(0);
return(0);
}
return(DefWindowProc(hWnd, uMsg, wParam, lParam));
}
C/C++ 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <windows.h>
#include
<tchar.h>

// link in AltAxWinInit() & containment code statically
// this require a instance (_Module) of CComModule

#include
<atlbase.h>

CComModule _Module;

#include
<atlcom.h>
#include
<atlhost.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


static const OLECHAR* pszFileName = OLESTR("d:\\acrobat.pdf");
static const LPTSTR   pszAppName  = TEXT("AcrobatReaderTest");


int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int nCmdShow)
{
  WNDCLASSEX wc;
  HWND       hWnd;
  MSG        msg;

    // ATL initialisieren
    _Module.Init(NULL, hInstance);
    AtlAxWinInit();

    wc.cbSize        = sizeof(wc);
    wc.style         = 0;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = pszAppName;
    wc.hIconSm       = wc.hIcon;

    RegisterClassEx(&wc);

    hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, wc.lpszClassName,
                          wc.lpszClassName, WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage (&msg);
    }

    // ATL deinitialisieren
    AtlAxWinTerm();
    _Module.Term();

  return(msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  PAINTSTRUCT ps;
  OLECHAR     szCLSID[64];
  CLSID       clsid;
  HWND        hWndPdf;
 
    switch(uMsg)
    {
        case WM_CREATE:
             StringFromGUID2(clsid, szCLSID, 64);
             hWndPdf = CreateWindowEx(0, TEXT("AtlAxWin"),
                                TEXT("{CA8A9780-280D-11CF-A24D-444553540000}"),
                                WS_CHILD | WS_VISIBLE, 0, 0, 0,
                                0, hWnd, NULL,
                                ((CREATESTRUCT*)lParam)->hInstance, NULL);

             if(IsWindow(hWndPdf))
             {
                 IUnknown* pUnk = NULL;
                 AtlAxGetControl(hWndPdf, &pUnk);

                 BSTR bstrFile = SysAllocString(pszFileName);

                 VARIANTARG var;
                 VariantInit(&var);
                 var.vt      = VT_BSTR;
                 var.bstrVal = bstrFile;

                 CComDispatchDriver pDisp(pUnk);
                 pDisp.PutPropertyByName(OLESTR("src"), &var);

                 VariantClear(&var);
                 pUnk->Release();
             }
             return(0);
        case WM_PAINT:
             BeginPaint(hWnd, &ps);
             EndPaint(hWnd, &ps);
             return(0);
        case WM_ERASEBKGND:
             return(1);
        case WM_SIZE:
             if(NULL != (hWndPdf = GetWindow(hWnd, GW_CHILD)))            
                 MoveWindow(hWndPdf, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
             return(0);
        case WM_CLOSE:
             DestroyWindow(hWnd);
             return(0);
        case WM_NCDESTROY:    
             PostQuitMessage(0);
             return(0);
    }
  return(DefWindowProc(hWnd, uMsg, wParam, lParam));
}


[ Dieser Beitrag wurde am 08.01.2002 um 21:29 Uhr von CMatt editiert. ]
Endy
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2001
Beiträge: 790
Beitrag Endy Mitglied 13:46:00 09.10.2001   Titel:              Zitieren

neeeeeeein das nimmt dir keine übel!!! [img]images/smiles/icon_biggrin.gif[/img]
cool [img]images/smiles/icon_biggrin.gif[/img]
ich muss aber nehme ich an ein ATL-Projekt erstellen oder?
jajaja... genau sowas hab ich gesucht
thx thx thx
King: du bist der King!!!
*jipi* [img]images/smiles/icon_smile.gif[/img] [img]images/smiles/icon_smile.gif[/img] [img]images/smiles/icon_biggrin.gif[/img] [img]images/smiles/icon_biggrin.gif[/img] [img]images/smiles/icon_smile.gif[/img] [img]images/smiles/icon_smile.gif[/img]
*strahl*
ciaoy

>> Endy <<
Endy
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2001
Beiträge: 790
Beitrag Endy Mitglied 15:05:00 09.10.2001   Titel:              Zitieren

Also ich hab das ganze mal compiliert(er funzt natürlich auch... obwohl das längst nich selbstverständlich is: ich bin schon auf Codes gestoßen, die nich gefunzt haben!) und mir den code genauer angeschaut... bin auf zwei dinge gestoßen:

1.
C/C++ Code:
  case WM_CREATE:
        StringFromGUID2(clsid, szCLSID, 64);
C/C++ Code:
case WM_CREATE:
StringFromGUID2(clsid, szCLSID, 64);
C/C++ Code:
  case WM_CREATE:
        StringFromGUID2(clsid, szCLSID, 64);

da hab ich mir gefragt wie du die GUID in nen string convertieren kannst, wenn beide vars doch noch NULL sind?
und welchen sinn hat die zeile eigendlich? du übergibst die GUID doch bei CreateWindowEx sowieso direkt als string????


2.
C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);
C/C++ Code:
1
2
3
4
5
6
7
8
9
VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);
C/C++ Code:
1
2
3
4
5
6
7
8
9
VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);


Naja ich weiß, was die Zeilen machen(also die pdf datei laden)
aber wie kommst du darauf?
bzw. Ich versteh es so(mit hilfe der MSDN) das du das properitiy src neu setzt aber woher weiß ich, welche properities ein Control hat bzw. WIE ich die zu setzen hab... du benutzt:
var.vt = VT_BSTR;
var.bstrVal = bstrFile;
(wie du auf den Variablentyp kommst und was VariantInit macht is mir ja klar)
Kann man das irgendwo nachlesen?

Man hat mir gesagt das jedes ActiveX element anders bedient wird...
ok... aber woher weiß man dann wie?
thx
ciaoy

>> Endy <<

PS: *jipi* und nochmal thx thx thx!!!!
King
Unregistrierter




Beitrag King Unregistrierter 15:29:00 09.10.2001   Titel:              Zitieren

Zitat:

1.
C/C++ Code:
  case WM_CREATE:
        StringFromGUID2(clsid, szCLSID, 64);
C/C++ Code:
case WM_CREATE:
StringFromGUID2(clsid, szCLSID, 64);
C/C++ Code:
  case WM_CREATE:
        StringFromGUID2(clsid, szCLSID, 64);



Das ist natürlich Blödsinn. Eigentlich wollte ich beim Zusammenstellen des Samples ganz was anderes machen. Diese Zeile ist als Leiche geblieben und völlig sinnlos.

Zitat:

du übergibst die GUID doch bei CreateWindowEx sowieso direkt als string????


Eben.

Zitat:

2.
C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);
C/C++ Code:
1
2
3
4
5
6
7
8
9
VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);
C/C++ Code:
1
2
3
4
5
6
7
8
9
VARIANTARG var;
VariantInit(&var);
var.vt = VT_BSTR;
var.bstrVal = bstrFile;

CComDispatchDriver pDisp(pUnk);
pDisp.PutPropertyByName(OLESTR("src"), &var);

VariantClear(&var);



Den Namen der Eigenschaft habe ich aus der TypeLib (mit der OLE-Ansicht auf File/ViewTypeLib und dann auf das .ocx).

Zitat:

Man hat mir gesagt das jedes ActiveX element anders bedient wird...
ok... aber woher weiß man dann wie?


Da mußt Du dann halt in die Doku zum Control schauen. Allerdings bieten die Controls auch einen Standard-Satz an Eigenschaften. Schau mal in der MSDN nach:

MSDN Library - July 2001
-> Platform SDK Documentation
-> Component Services
-> COM
-> Controls and Property Pages
-> Guide
-> ActiveX Controls
-> Properties and Methods
-> Control Properties
-> Standard Properties


Übrigens: Ein ATL-Project brauchst Du auch nicht zu erstellen. Ich habe auch nur eine 'Leere Win32-Anwendung' erstellt. Das mußt Du nur dann, wenn Du den Wizzard benutzen willst.
Endy
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2001
Beiträge: 790
Beitrag Endy Mitglied 15:54:00 09.10.2001   Titel:              Zitieren

>Übrigens: Ein ATL-Project brauchst Du auch nicht zu erstellen. Ich
>habe auch nur eine 'Leere Win32-Anwendung' erstellt. Das mußt Du nur
>dann, wenn Du den Wizzard benutzen willst.
Ja ich habs auch gemerkt [img]images/smiles/icon_wink.gif[/img]

>Tja, Tutorials zum Thema kenn ich leider nicht
das wird sich bald ändern [img]images/smiles/icon_wink.gif[/img] Denn sowas wichtiges: da muss es auch ein Tutorial zu geben!!! Sobald ich da einigermaßen den überblick hab... ne... sobald sich mein wissen etwas gesetzt hat und ich ein bischen übung darin hab wird zu meinem Tut ergänzt...

ach ja: kann ich dein Beipsiel vieleicht mit einbauen?
(als Codebeispiel halt)
Ich finde es nämlich recht einfach aufgebaut...
Überhaupt diese Post hier war mehr als Informatif, denn eigendlich ist alles gesagt was zu sagen ist, damit man sich das selber beibringen kann(naja gut ich wusste ja auch grob schon über die interfaces bescheid aber das ist meiner meinung nach eh recht einfach.) Danke!!!
ciaoy

>> Endy <<
Endy
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.06.2001
Beiträge: 790
Beitrag Endy Mitglied 16:49:00 09.10.2001   Titel:              Zitieren

mist...
eine Frage hab ich doch noch: Wie kann ich die Methods der Elemente benutzen... z.b. bei deinem PDF-element gibts ne funktion:
setZoom(int perzent);
...
wie komm ich da ran?
thx

>> Endy <<

PS: hoffentlich is das jetze endlich die letze frage... *G*
King
Unregistrierter




Beitrag King Unregistrierter 18:22:00 09.10.2001   Titel:              Zitieren

Zitat:
Original erstellt von Endy:
mist...
eine Frage hab ich doch noch: Wie kann ich die Methods der Elemente benutzen... z.b. bei deinem PDF-element gibts ne funktion:
setZoom(int perzent);


Methoden rufst Du mit InvokeX() auf. Da die Methode einen Parameter übernimmt, nimmst Du Invoke1(). Da der Datentyp Integer bei VB 16 Bit breit ist, nehme ich hier VT_I2:

Code:
  VARIANTARG varZoom;
  VariantInit(&varZoom);
  varZoom.vt    = VT_I2;
  varZoom.iVal  = 150;
  pDisp.Invoke1(OLESTR("setZoom"), &varZoom);
  VariantClear(&varZoom);
Code:
VARIANTARG varZoom;
VariantInit(&varZoom);
varZoom.vt = VT_I2;
varZoom.iVal = 150;
pDisp.Invoke1(OLESTR("setZoom"), &varZoom);
VariantClear(&varZoom);
Code:
  VARIANTARG varZoom;
  VariantInit(&varZoom);
  varZoom.vt    = VT_I2;
  varZoom.iVal  = 150;
  pDisp.Invoke1(OLESTR("setZoom"), &varZoom);
  VariantClear(&varZoom);


Ganz einfach, gell?
C/C++ Forum :: FAQ - WinAPI ::  ActiveX  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.