Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dialogbox um Checkboxen ergänzen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.01.2007, 19:56 Uhr
~minocus
Gast


Hi,

ich versuche grade verzweifel meiner Dialogbox eine Checkbox hinzuzufügen. Dabei möchte ich nicht den Visual c++ Editor benutzen, sondern entsprechend der Situation viele Checkboxen via WinAPI erzeugen. Allerdings tut es das nicht so richtig.

Ich dachte mir, ich erzeuge da einfach ein Childwindow in der Callbackfunktion des Dialoges, jedoch klappt das nicht so recht.


C++:
INT_PTR CALLBACK InputDevices(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND hCheckbox;

    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_CREATE:
        hCheckbox = CreateWindow(L"Checkbox", L"Auswahl",  WS_CHILD | WS_VISIBLE, 10, 10, 20, 20, NULL, (HMENU) 1000, NULL, NULL);
        ShowWindow(hCheckbox, true);
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if(LOWORD(wParam) == IDOK)
            EndDialog(hDlg,(INT_PTR)TRUE);
        break;

    case WM_CLOSE:
        EndDialog(hDlg,(INT_PTR)TRUE);
        break;
    }
    return (INT_PTR)FALSE;
}


Was mach ich falsch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.01.2007, 21:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst ihm als parent schon dein fenster geben ;-)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.01.2007, 22:10 Uhr
xXx
Devil


Und warum rufst du ShowWindow noch auf wenn du eigentlich schon mit dem WS_VISIBLE Style gesagt hast das dein Window sichtbar sein soll...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.01.2007, 08:44 Uhr
~minocus
Gast



Zitat von FloSoft:
du musst ihm als parent schon dein fenster geben ;-)


ahso, also den handle vom dialogfenster?!?, hab das programm so gemacht, das im grunde die main routine aus dem aufruf der DialogBox funktion besteht. ich erstelle also keinerlei normale windows fenster o.ä.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.01.2007, 12:42 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat:

Zitat von FloSoft:
du musst ihm als parent schon dein fenster geben ;-)


ahso, also den handle vom dialogfenster?!?, hab das programm so gemacht, das im grunde die main routine aus dem aufruf der DialogBox funktion besteht. ich erstelle also keinerlei normale windows fenster o.ä.

Wie du dein Hauptfenster erstellst bzw darstellst ist irrelevant. So musst du halt das Handle auf deine Dialog Box übergeben

Dieser Post wurde am 11.01.2007 um 14:21 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.01.2007, 19:09 Uhr
~minocus
Gast


Hmmm funktioniert nicht. Hier mal der ganze Code. Der Dialog selbst ist über den editor erstellt und behinhaltet derzeit nur einen ok button. ich möchte jetzt in den dialog eine checkbox reinkriegen. das klappt aber irgendwie nicht.

C++:
// DirectInputDialog.cpp : Definiert den Einstiegspunkt für die Anwendung.
//

#include "stdafx.h"
#include "DirectInputDialog.h"
#include <dinput.h>

INT_PTR CALLBACK    InputDevices(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{

    DialogBox(hInstance, MAKEINTRESOURCE(IDD_INPUT), NULL, InputDevices);

    return 0;
}


// Meldungshandler für Infofeld.
INT_PTR CALLBACK InputDevices(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND hCheckbox;

    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        hCheckbox = CreateWindowEx(NULL, L"Checkbox", L"Auswahl",  BS_CHECKBOX | WS_VISIBLE, 200, 200, 20, 20, hDlg, (HMENU) 1000, NULL, NULL);
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if(LOWORD(wParam) == IDOK)
            EndDialog(hDlg,(INT_PTR)TRUE);
        break;

    case WM_CLOSE:
        EndDialog(hDlg,(INT_PTR)TRUE);
        break;
    }
    return (INT_PTR)FALSE;
}



Preisfrage, was mach ich falsch? versteh es irgendwie nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.01.2007, 11:41 Uhr
~minocus
Gast


Wirklich keiner eine Idee, das frustriert mich total. kann doch so schwer sein diese blöde checkbox in den dialog rein zu bekommen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.01.2007, 14:41 Uhr
xXx
Devil



C++:
#include "stdafx.h"
#include "DirectInputDialog.h"
#include <dinput.h>

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

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int)
{
    return DialogBox(hInstance, MAKEINTRESOURCE(IDD_INPUT), NULL, InputDevices);
}

LRESULT CALLBACK InputDevices(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hCheckbox = NULL;

    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
        case WM_INITDIALOG:
        {
            hCheckbox = CreateWindowEx(0, TEXT("button"), TEXT("Auswahl"),  BS_CHECKBOX | WS_VISIBLE, 200, 200, 20, 20, hDlg, (HMENU) 1000, NULL, NULL);
      
            return TRUE;
        }
        case WM_COMMAND:
        {
            if (LOWORD(wParam) == IDOK)
                EndDialog(hDlg, TRUE);
        } break;
        case WM_CLOSE:
        {
            EndDialog(hDlg, TRUE);
        } break;
    }
    return FALSE;
}
Naja ... davon abgesehen das du nen paar vollständig überflüssige Casts drin hattest ... hast du ne unregistrierte Window Class "checkbox" genommen ... du musst "button" nehmen ... und als style BS_CHECKBOX übergeben ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.02.2007, 21:05 Uhr
berniebutt



Ohne den Parent-HANDLE deiner Dialogbox läuft nichts. Hatten auch schon andere gesagt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: