JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=9cba59a19992e55a6500becaaf8ebc0bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Dialoge

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 12:55    Titel: Dialoge Antworten mit Zitat

1. Wenn ich einen neuen Dialog ersatellen (in Vc++ als Ressource) und ien neues Elemnt einfügen will, kommt einen Auswahl von Active X Steuerelemente ( bestimmt ca. 50 Stück). Im meinen tollen neuen PetzoldBuch werden aber nur wenige Beschrieben und die haben anderer Namen. LABEL statt CTEXT und ICON hab ich noch gar nicht gefunden.
In dem Buch werdfen so ca. 10 Stück behaldelt, die wichtigsten. Kann man jetzt sowas wie in VisualBasic machen, das man eine Leiste mit diesen ca. 10 am Rand hat und sie so ohne lange Suchen einfügen kann?

2. Mein hübscher Dialog wird leider nicht angeziegt! Woran kann das liegen? Beim dem Menü lag es daran, dss der Menüname falsch war, mit ner StringID gings aber. Darauf hab ich dann auch beim Dialog geachtet, aber es geht einfach nicht! Die DialogProcedure hab ich 1zu1 aus dem Petzold Buch übernommen, daran wirds wohl also auch nicht liegen. Weiß jemand noch ne Idee?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 14:12    Titel: Antworten mit Zitat

ich kann ja auch mal den Code posten:

main:
Code:

#define _WIN32_WINNT 0x500//Für das Mausrad

#include <windows.h>
#include <stdio.h>
#include "resource.h"

/* First Windows Prgoramm by Jonathan Klein
--------------------------------------------
*/

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{


   HWND hWnd;
   MSG msg;
   WNDCLASS wndClass;

   wndClass.style=CS_HREDRAW | CS_VREDRAW;
   wndClass.lpfnWndProc=WndProc;
   wndClass.cbClsExtra=0;
   wndClass.cbWndExtra=0;
   wndClass.hInstance=hInstance;
   wndClass.hIcon=LoadIcon(NULL, "Icon");
   wndClass.hCursor=LoadCursor(NULL, IDC_ARROW);
   wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
   wndClass.lpszMenuName="Menu";
   wndClass.lpszClassName="Windows Program";

   RegisterClass(&wndClass);

   hWnd=CreateWindow("Windows Program", "Nice Title, huh?",
                  WS_OVERLAPPEDWINDOW | WS_VSCROLL,
                  CW_USEDEFAULT,
                  CW_USEDEFAULT,
                  CW_USEDEFAULT,
                  CW_USEDEFAULT, // ah, cool, a default Window...
                  NULL,
                  NULL,
                  hInstance,
                  NULL);
      ShowWindow(hWnd, iCmdShow);
   UpdateWindow(hWnd);

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

   return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   HDC hDC; //DeviceContex handel
   static int iTextSizeX, iTextSizeY;
   static int iDeltaPerLine, iAccumDelta;//Für das Mausrad
   static HINSTANCE hInstance;

   int iXPos=0, iYPos=0;
   int WindowsSizeX=0, WindowSizeY=0;
   int iScroll=0;
   PAINTSTRUCT ps;
   SCROLLINFO si;
   TEXTMETRIC tm;
   FILE *Datei=NULL;
   char Puffer[256];

   switch(message)
   {
   case WM_CREATE:
      hDC=GetDC(hWnd);
      GetTextMetrics(hDC, &tm);
      iTextSizeX=tm.tmAveCharWidth;
      iTextSizeY=tm.tmHeight+tm.tmExternalLeading;
      ReleaseDC(hWnd, hDC);
      //Den Schieberegler "kalibireiren"
      si.nMin=0;
      si.nMax=40;
      si.nPage=6;
      si.cbSize=sizeof(si);
      si.fMask=SIF_RANGE | SIF_POS | SIF_PAGE;
      si.nPos=0;
      SetScrollInfo(hWnd, SB_VERT, &si, true);

      hInstance=((LPCREATESTRUCT) lParam)->hInstance;

      //Testweise:
      SendMessage(hWnd, WM_SETTINGCHANGE, 0, 0);
      break;
   case WM_SETTINGCHANGE:
      ULONG ulScrollLines;
      SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &ulScrollLines, 0);
      if(ulScrollLines)//Wenns nicht 0 sit
      {
         iDeltaPerLine=WHEEL_DELTA/ulScrollLines;
      }
      else
      {
         iDeltaPerLine=0;
      }
      break;
   case WM_DESTROY:
      PostQuitMessage(0);
      break;
   case WM_PAINT:
      hDC=BeginPaint(hWnd, &ps);//Die Textdatei "Text.txt" anzeigen:
      Datei=fopen("Text.txt", "rt");
      if(NULL==Datei)
      {
         MessageBox(hWnd, "Text.txt wurde nicht gefunden...", "Fehler!", MB_OK);
      }
      else
      {
         GetScrollInfo(hWnd, SB_VERT, &si);
         iXPos=iTextSizeX;
         iYPos=-iTextSizeY*si.nPos;
         while(!feof(Datei))
         {
            fgets(Puffer, 255, Datei);
            //Das Zeichenumstaltzeichen löschen:
            if('\n'==Puffer[strlen(Puffer)-1])
            {
               Puffer[strlen(Puffer)-1]='\0';
            }
            TextOut(hDC, iXPos, iYPos, Puffer, strlen(Puffer));
            iYPos+=iTextSizeY;
         }
         fclose(Datei);
      }
      char Text[32];
      sprintf(Text, "%d", si.nPos);
      TextOut(hDC, 0, 0, Text, strlen(Text));
      EndPaint(hWnd, &ps);
      break;
   case WM_VSCROLL:
      si.fMask=SIF_ALL;
      GetScrollInfo(hWnd, SB_VERT, &si);
      switch(LOWORD(wParam))
      {
      case SB_LINEUP:
         si.nPos--;
         break;
      case SB_LINEDOWN:
         si.nPos++;
         break;
      case SB_THUMBTRACK:
         si.nPos=si.nTrackPos;
         break;
      }
      SetScrollInfo(hWnd, SB_VERT, &si, true);
      //Dafür sorgen das WM_APINT aufgerufen wird:
      InvalidateRect(hWnd, NULL, true);
      UpdateWindow(hWnd);
      break;
   case WM_MOUSEWHEEL:
      if(!iDeltaPerLine)//Wenns Null ist abbrechen!
      {
         MessageBox(hWnd, "Mist", "Mist", MB_OK);
         break;
      }
      iAccumDelta+=(short)HIWORD(wParam);
      while(iAccumDelta>=iDeltaPerLine)
      {
         SendMessage(hWnd, WM_VSCROLL, SB_LINEUP, 0);
         iAccumDelta-=iDeltaPerLine;
      }
      while(iAccumDelta<=iDeltaPerLine)
      {
         SendMessage(hWnd, WM_VSCROLL, SB_LINEDOWN, 0);
         iAccumDelta+=iDeltaPerLine;
      }
      break;
   case WM_HELP:
      MessageBox(NULL, "No, this is just a funny Button to make you helpless...", "Hilfe:", 0);
      break;
   case WM_COMMAND:
      switch(LOWORD(wParam))
      {
      case IDOPEN:
         MessageBox(hWnd, "geht noch nicht...", "Error Nr. 3427", MB_OK);
         break;
      case IDCANCEL:
         MessageBox(hWnd, "Du hast es so gewollt...", "Beendungsprozedur 215,4", MB_OK);
         SendMessage(hWnd, WM_CLOSE, 0, 0);
         break;
      case IDABOUT:
         DialogBox(hInstance, MAKEINTRESOURCE(ID_ABOUTDIALOG), hWnd, AboutDlgProc);
         break;

      };
   default:
      return DefWindowProc(hWnd, message, wParam, lParam);
      break;
   }
   return 0;
}

BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
   switch(message)
   {
   case WM_INITDIALOG:
      MessageBox(hDlg, "gestartet", "Informationsbaltt NR. 705", MB_OK);
      return true;
      break;
   case WM_COMMAND:
      switch(LOWORD(wParam))
      {
      case IDOK:
         EndDialog(hDlg, 0);
         return true;
         break;
      }
      break;
   }
   return false;
}


Ressourcendatei:
Code:

//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

/////////////////////////////////////////////////////////////////////////////
// Deutsch (Deutschland) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#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


/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

MENU MENU DISCARDABLE
BEGIN
    POPUP "Datei"
    BEGIN
        MENUITEM "Öffnen",                      IDOPEN
        MENUITEM "Beenden",                     IDCANCEL
    END
    POPUP "Hilfe"
    BEGIN
        MENUITEM "About",                       IDABOUT
    END
END


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
ICON                    ICON    DISCARDABLE     "icon1.ico"

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

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
    ID_ABOUTDIALOG, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 179
        TOPMARGIN, 3
        BOTTOMMARGIN, 83
    END
END
#endif    // APSTUDIO_INVOKED


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

ID_ABOUTDIALOG DIALOG DISCARDABLE  0, 0, 186, 90
STYLE DS_MODALFRAME | WS_POPUP
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,65,65,50,14
    CONTROL         "",IDC_LABEL1,"{978C9E23-D4B0-11CE-BF2D-00AA003F40D0}",
                    0x0,35,30,110,10
END


/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
//

ID_ABOUTDIALOG DLGINIT
BEGIN
    IDC_LABEL1, 0x376, 80, 0
0x0000, 0x0000, 0x0200, 0x0038, 0x002b, 0x0000, 0x0000, 0x0000, 0xe9ec,
0x00d8, 0x001f, 0x8000, 0x7250, 0x676f, 0x6172, 0x6d6d, 0x6569, 0x7472,
0x7620, 0x6e6f, 0x4a20, 0x6e6f, 0x7461, 0x6168, 0x206e, 0x6c4b, 0x6965,
0x006e, 0x110e, 0x0000, 0x01a7, 0x0000, 0x0200, 0x000c, 0x0034, 0x0000,
0x00a5, 0x0000, 0x0200, 0x0000,
    0
END

#endif    // Deutsch (Deutschland) resources
/////////////////////////////////////////////////////////////////////////////



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


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


Braucht ihr noch was?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 15:09    Titel: Antworten mit Zitat

Hallo Jonathan,

also ich hab in meiner WinMain-Schleife gleich als erstes den Aufruf für den Dialog:
Code:

if(showStartDlg(hInstance) != IDOK)
{
   return -1;
}

Wenn der Dialog abgebrochen wird, wird dann nämlich gleich der Rest des Programms auch abgebrochen.

Klickt man auf OK geht's dann ganz normal weiter mit dem Hauptfenster. Das funktioniert echt gut.
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 15:13    Titel: Antworten mit Zitat

Hi,

http://msdn.microsoft.com --> Artikelsektion --> Suche --> "Dialog creation"

ansonsten: Kauf Dir den Petzold mit 60€ ist dies eine gute Investition fürs Leben

- Patrick
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 15:35    Titel: Antworten mit Zitat

hm, eben dieses Buch hab ich ja, aber es geht nicht...
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 15:36    Titel: Antworten mit Zitat

Wie geht nicht?

Dann schnapp Dir den Code und vergleiche ihn mit Deinem Stück für Stück

- Patrick
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 15:51    Titel: Antworten mit Zitat

ok, ich hab mal meine Ressourcendatei in ein Beispielprog eingefügt, ging auch nicht. Alos hab ich die Datei gelöscht und ne neuegemacht, jetzt geht es! Keine Ahnung warum, aber egal.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 16:00    Titel: Antworten mit Zitat

Sehr wahrscheinlich weil die ID Namen bzw. Werte nicht die exakten waren, das ist der einzigste Grund der möglich ist.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 16:12    Titel: Antworten mit Zitat

ne, das wars nicht. Ich hab jetzt herausgefunde, das es an den ActiveX Steuerelementen liegt. Ich hab einen Standard Diealo (so einen wo schon OK und Abbrechen als Button ist) genommen, der ging. Dann wollt ich per Label einen Text reinsetzten, und schon gings nicht mehr! Wie kann ich die ganz normalen Steuerelemente einsetzten, ohne ActiveX? Das Bcuh ist halt von 98, da gabs noch kein VC++ 6.0.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 16:17    Titel: Antworten mit Zitat

Dann sag mir mal was Du für ne Version vom Buch hast? Jede Version des Buches vom Petzold war für VC++6 ausgelegt und auf UNICODE. (Gibt es nur für NT Kernel und hat nichts mit 9x zu tun) ActiveX? Wird doch für Dialoge gar nicht mehr benutzt, ist doch total veraltet.

- Patrick
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.10.2004, 16:25    Titel: Antworten mit Zitat

Ich hab die 5 Auflage
Aber Glücklicherweise hab ich eine halbLösung gefunden. Wenn ich auf Ansich-GanzerBildschirm klicke, sehe ich den dialog mitsamt einem netten Fenster Namens Steuerelemente. Da hab ich meine ca. 10 und kann sie ganz einfach einsetzten und alles funktioniert wunderbar.
Bis darauf das ich immer in den Vollbildmodus wechsel muss. Im nromalen Modus hab ich das Fenster noch nie zu sehen bekommen. Da ist immer nur der Dialog und die einzige Möglichkeit was hinzuzufügen ost, per Rechtsklick ein Menü zu öffnen und da "ActiveX Steuerelement hinzufügen" anzuklicken. Keine Ahnung warum dasso ist. Ist das bei irgendjemanden anders?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum