Handle zuweisen ? Wie



  • Wie erstellt man ein Button mit SetDlgItem und weißt ihm ein handel zu ?

    Oder kann man damit nur Controls machen ?

    Wenn welche API verwende ich um ein Button zu erstellen ?

    Gruss

    OH



  • SetDlgItem kennt mein PSDK nicht.

    Aber Handles weißt immer Windows zu, die kannst du nicht selber vergeben. Woher willst du auch wissen, welches Handle noch frei ist?



  • Okay dann anders ausgedrückt, wie verbinde ich ein Handle mit einem Button,
    geschweigeden vom Initialisieren eines solltes zu sprechen ?

    Wenn ich meine API's benutzen will muss ich ja schießlich irgendetwas haben was mit dem Button assoziert, oder nicht !?

    Hoffe da weiß jemand weiter.

    Gruss



  • HWND hWndBtn = CreateWindowEx(...);



  • In VC++ gibt's Button ID's gibt sowas in C++m auch ?



  • Och menno, macht irgendwie kein Spaß mit dir. 🙄 😞



  • Hab das mit dem Button nun hinbekommen, aber wieso sehe ich es nicht ?

    hier der Cde:

    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    HWND       hWnd;
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI
    WinMain (HINSTANCE hThisInstance,
             HINSTANCE hPrevInstance,
             LPSTR lpszArgument,
             int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "OUTLiVE Release - KeyGenerator for Acoustica's MP3 Audio Mixer v2.42 - Coded by OHPen",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               600,                 /* The programs width */
               200,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK
    WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    static HWND hButton;
    
       switch (message)
       {
       case WM_CREATE:
          {hButton = CreateWindow(  "button",
                                      "Beenden",
                                      WS_CHILD | WS_VISIBLE,
                                      30, 30, 30, 30,
                                      hWnd,
                                      NULL,
                                      ((LPCREATESTRUCT) lParam) -> hInstance,
                                      NULL);
             return 0;
          }
       case WM_SIZE:
          { MoveWindow(hButton, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30,
                                                               160, 22, TRUE);
             return 0;
          }case WM_COMMAND:
          {
             if (lParam == (LPARAM)hButton)
             {
                if (HIWORD(wParam) == BN_CLICKED)
                   SendMessage(hWnd, WM_CLOSE, 0, 0);
             }
             return 0;
          }
       case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
    }
    


  • Bei CreateWindow mußt du die Variable hwnd benutzen und nicht hWnd.

    BTW: Warum sollte man einem Cracker helfen? :p



  • Tja mache stehen wenigsten dazu !!!!!!!

    BTW Weißt dann vielleicht auch wie man ein Button flat macht bzw die ganzen verschiedenen Möglichkeiten die man in VC++ auch hat ?



  • Das hat überhaupt nichts mit dem Visual C++ zu tun, sondern mit der WinAPI. Guck doch einfach in die Dokumentation.

    BS_FLAT Specifies that the button is two-dimensional; it does not use the default shading to create a 3-D image.



  • Das war halt mal ne Hilfe 😉
    Hab's geckeckt, danke.

    Gruß oh


Anmelden zum Antworten