Avatar billede stringbuffer Nybegynder
07. april 2001 - 16:26 Der er 6 kommentarer og
1 løsning

DLL åbne og skrive til et vindue

Jeg vil gerne lave et display til en service, jeg har implementeret i en .dll (lavet med ATL), som kører sammen med Inetinfo.exe på NT-server.

Hvordan kan jeg inde fra min .dll åbne et vindue og output´e noget tekst til det inde fra .dll´en?

Jeg søger et eksempel, gerne meget simpelt, det skal være lavet i Visual C++.
Avatar billede wisen Nybegynder
07. april 2001 - 17:38 #1
Hvilken slags vindue snakker vi om ? Skal det bare være et almindeligt Windows-style, eller DOS-style eller hvad :)

/wisen
Avatar billede stringbuffer Nybegynder
08. april 2001 - 20:53 #2
wisen <- jeg snakker om et almindeligt windows-style vindue.

jeg har løst min opgave ved at lave et ekstra consol-program og udveksle data med min service gennem en socket-forbindelse, jeg er dog stadig meget interesseret i et eksempel på hvordan man kan åbne og manipulere et vindue fra en dll
Avatar billede wisen Nybegynder
20. april 2001 - 08:51 #3
Jammen det fungerer faktisk på samme måde, som fra et almindeligt program. Du laver din dialogressource som du plejer, og for at vise den, laver du såmænd bare en instans af ressourcen, som du viser...

Jeg har ikke lige et eksempel jeg kan vise dig, men du kan prøve dig lidt frem.

/wisen
Avatar billede psp_psp Nybegynder
23. april 2001 - 13:10 #4
Hvad med MessageBox? Eller DialogBox med en edit control
(husk: #include <windows.h>)
Avatar billede stringbuffer Nybegynder
25. maj 2001 - 10:03 #5
psp <- dur ikke med messageBox, da den blokerer den kaldende thread. Hvad en dialog med edit angår, så er det netop et eksempel + noget kode, jeg efterspørger. Det står også i mit spørgsmål.
Har du et eksempel og noget kode, der virker, vil jeg med glæde godkende dit svar.
Avatar billede psp_psp Nybegynder
29. maj 2001 - 15:21 #6
Her er noget kode:

#include \"stdafx.h\"
#include  <process.h>
#include  <stdlib.h>
#include \"resource.h\"

//Husk: Project|Settings|C/C++|Category=Code Generation.
//Vælg \'User Runtime libirary\' = Multithreaded
//Hvis du laver dll skal det være \'Multithreaded DLL\'
void OutputThread(void *dummy);
BOOL CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

HWND hDlg;

//Main thread
int APIENTRY WinMain(HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR    lpCmdLine,
                    int      nCmdShow)
{

    _beginthread(OutputThread,0, NULL);   
   
    for (int count = 0; count < 150; count++)
    {
        Sleep(50);
        if(!hDlg) return 0;
        SendMessage(hDlg, WM_USER, count,0);
    }

    if(hDlg) DestroyWindow(hDlg);

    return 0;
}

void OutputThread(void *dummy)
{
    HINSTANCE hInst = GetModuleHandle(NULL);
    MSG msg;

    hDlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG1), 0, DlgProc);
    ShowWindow(hDlg, SW_SHOW);

    while (GetMessage(&msg, NULL, NULL, NULL))
    {
       
        if (!IsWindow(hDlg) || !IsDialogMessage(hDlg, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}

BOOL CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    char buffer[128];
   
    switch(uMsg)
    {
        case WM_COMMAND:
            DestroyWindow(hDlg);
            hDlg = 0;
            break;

        case WM_USER:
            _itoa(wParam, buffer, 10);
            SetWindowText(GetDlgItem(hDlg, IDC_TEXT), buffer);
            break;
    }
   
    return 0;
}

-------------------------------------------
  SCRIPT.RC
-------------------------------------------
//Microsoft Developer Studio generated resource script.
//
#include \"resource.h\"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include \"afxres.h\"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE
BEGIN
    \"resource.h\\0\"
END

2 TEXTINCLUDE DISCARDABLE
BEGIN
    \"#include \"\"afxres.h\"\"\\r\\n\"
    \"\\0\"
END

3 TEXTINCLUDE DISCARDABLE
BEGIN
    \"\\r\\n\"
    \"\\0\"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG1 DIALOG DISCARDABLE  0, 0, 186, 55
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION \"Test\"
FONT 8, \"MS Sans Serif\"
BEGIN
    PUSHBUTTON      \"Cancel\",IDCANCEL,67,32,50,14
    CTEXT          \"Static\",IDC_TEXT,14,13,158,8
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
    IDD_DIALOG1, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 179
        TOPMARGIN, 7
        BOTTOMMARGIN, 48
    END
END
#endif    // APSTUDIO_INVOKED

#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

------------------------------------------------
  RESOURCE.H
------------------------------------------------
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by script.rc
//
#define IDC_TEXT                        100
#define IDD_DIALOG1                    101

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE        40001
#define _APS_NEXT_CONTROL_VALUE        1000
#define _APS_NEXT_SYMED_VALUE          101
#endif
#endif
Avatar billede stringbuffer Nybegynder
07. juni 2001 - 14:20 #7
OK, det har givet mig en idé, selvom det ikke er helt det, jeg efterspurgte i mit spørgsmål. Du bruger messages til at sende data til et vindue, men jeg tror nok jeg vil kunne bruge det.

Her er de points, jeg lovede.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester