Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
// ****************************************************************** // Dialogfunktion INT_PTR CALLBACK D3DEnumDialogProc(HWND hDlg, unsigned int uiMsg, WPARAM WParam, LPARAM LParam) { char acFilename[256]; FILE* pFile; // Nachricht verarbeiten switch(uiMsg) { case WM_INITDIALOG: // Optionskästchen einstellen CheckDlgButton(hDlg, IDC_D3DS_FULLSCREEN_MODE, BST_CHECKED); CheckDlgButton(hDlg, IDC_D3DS_HARDWARE_TNL, BST_CHECKED); // Alles abzählen EnumAdapters(hDlg); EnumDeviceTypes(hDlg); EnumVideoModes(hDlg); EnumBackBufferFormats(hDlg); EnumZStencilBufferFormats(hDlg); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); break; case WM_CLOSE: // Code 2 zurückliefern; das bedeutet: Dialog abgebrochen EndDialog(hDlg, 2); break; case WM_DESTROY: // Aufräumen DeleteListData(hDlg, IDC_D3DS_ADAPTERS); DeleteListData(hDlg, IDC_D3DS_DEVICE_TYPES); DeleteListData(hDlg, IDC_D3DS_VIDEO_MODES); DeleteListData(hDlg, IDC_D3DS_BACK_BUFFER_FORMATS); DeleteListData(hDlg, IDC_D3DS_Z_STENCIL_BUFFER_FORMATS); DeleteListData(hDlg, IDC_D3DS_MULTI_SAMPLING_TYPES); DeleteListData(hDlg, IDC_D3DS_MULTI_SAMPLING_QUALITIES); break; case WM_COMMAND: switch(LOWORD(WParam)) { case IDC_D3DS_ADAPTERS: if(HIWORD(WParam) == CBN_SELCHANGE) { // Es wurde ein neuer Adapter gewählt! Gerätetypen neu auflisten. GetParameters(hDlg, &g_TempParameters); EnumDeviceTypes(hDlg); EnumVideoModes(hDlg); EnumBackBufferFormats(hDlg); EnumZStencilBufferFormats(hDlg); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } else { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, ADAPTER_DESCRIPTION); } break; case IDC_D3DS_DEVICE_TYPES: if(HIWORD(WParam) == CBN_SELCHANGE) { // Es wurde ein neuer Gerätetyp gewählt! Videomodi neu auflisten. GetParameters(hDlg, &g_TempParameters); EnumVideoModes(hDlg); EnumBackBufferFormats(hDlg); EnumZStencilBufferFormats(hDlg); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } else { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, DEVICE_TYPE_DESCRIPTION); } break; case IDC_D3DS_WINDOWED_MODE: case IDC_D3DS_FULLSCREEN_MODE: if(HIWORD(WParam) == BN_CLICKED) { // Es wurde zwischen Fenster- und Vollbildmodus gewechselt! // Die Bildpufferformate müssen neu aufgelistet werden. GetParameters(hDlg, &g_TempParameters); EnumVideoModes(hDlg); EnumBackBufferFormats(hDlg); EnumZStencilBufferFormats(hDlg); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, WINDOWED_FULLSCREEN_DESCRIPTION); break; case IDC_D3DS_VIDEO_MODES: if(HIWORD(WParam) == CBN_SELCHANGE) { // Es wurde ein neuer Videomodus gewählt! Bildpufferformate neu auflisten. GetParameters(hDlg, &g_TempParameters); EnumBackBufferFormats(hDlg); EnumZStencilBufferFormats(hDlg); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } else { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, VIDEO_MODE_DESCRIPTION); } break; case IDC_D3DS_BACK_BUFFER_FORMATS: if(HIWORD(WParam) == CBN_SELCHANGE) { // Es wurde ein neues Bildpufferformat gewählt! Z-Stencil-Buffer-Formate neu auflisten. GetParameters(hDlg, &g_TempParameters); EnumZStencilBufferFormats(hDlg); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } else { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, BACK_BUFFER_FORMAT_DESCRIPTION); } break; case IDC_D3DS_Z_STENCIL_BUFFER_FORMATS: if(HIWORD(WParam) == CBN_SELCHANGE) { // Es wurde ein neues Z-Stencil-Buffer-Format gewählt! Multi-Sampling-Typen neu auflisten. GetParameters(hDlg, &g_TempParameters); EnumMultiSamplingTypes(hDlg); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } else { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, Z_STENCIL_BUFFER_FORMAT_DESCRIPTION); } break; case IDC_D3DS_MULTI_SAMPLING_TYPES: if(HIWORD(WParam) == CBN_SELCHANGE) { // Es wurde ein neuer Multi-Sampling-Typ gewählt! Qualitätsstufen neu auflisten. GetParameters(hDlg, &g_TempParameters); EnumMultiSamplingQualities(hDlg); SetParameters(hDlg, &g_TempParameters); } else { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, MULTI_SAMPLING_TYPE_DESCRIPTION); } break; case IDC_D3DS_MULTI_SAMPLING_QUALITIES: if(HIWORD(WParam) != CBN_SELCHANGE) { // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, MULTI_SAMPLING_QUALITY_DESCRIPTION); } break; case IDC_D3DS_HARDWARE_TNL: case IDC_D3DS_SOFTWARE_TNL: // Informationstext anzeigen SetDlgItemText(hDlg, IDC_D3DS_DESCRIPTION, TNL_DESCRIPTION); break; case IDC_D3DS_SAVE: { strcpy(acFilename, "*.cfg");//<--Hier brauch ichs als char array OPENFILENAME Filename = {sizeof(OPENFILENAME), hDlg, NULL, L".CFG-Dateien\0.cfg", NULL, 0, 1, acFilename, 255, NULL, 0, NULL, L".CFG-Datei speichern", //<- acFilename muss in LPWSTR konvertiert werden OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY | OFN_NOCHANGEDIR, 0, 1, L".cfg", 0, NULL, NULL}; if(GetSaveFileName(&Filename)) { // Parameter abfragen und speichern GetParameters(hDlg, &g_TempParameters); pFile = fopen(acFilename, "wb"); fwrite(&g_TempParameters, sizeof(SDirect3DParameters), 1, pFile); fclose(pFile); } } break; case IDC_D3DS_LOAD: { strcpy(acFilename, "*.cfg"); OPENFILENAME Filename = {sizeof(OPENFILENAME), hDlg, NULL, L".CFG-Dateien\0.cfg\0Alle Dateien\0*.*", NULL, 0, 1, acFilename, 255, NULL, 0, NULL, L".CFG-Datei laden", //<- acFilename muss in LPWSTR konvertiert werden OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR, 0, 1, L".cfg", 0, NULL, NULL}; if(GetOpenFileName(&Filename)) { // Parameter einlesen und aktivieren pFile = fopen(acFilename, "rb"); GetParameters(hDlg, &g_TempParameters); fread(&g_TempParameters, sizeof(SDirect3DParameters), 1, pFile); fclose(pFile); SetParameters(hDlg, &g_TempParameters); } } break; case IDC_D3DS_OK: // Parameter abfragen und einen eventuellen Fehler vermeiden GetParameters(hDlg, g_pDirect3DParameters); if(g_pDirect3DParameters->DeviceType != D3DDEVTYPE_HAL && !(g_pDirect3DParameters->dwFlags & D3DCREATE_SOFTWARE_VERTEXPROCESSING)) { if(g_pDirect3DParameters->dwFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) g_pDirect3DParameters->dwFlags ^= D3DCREATE_HARDWARE_VERTEXPROCESSING; g_pDirect3DParameters->dwFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING; } // Code 0 zurückliefern; das bedeutet: alles OK. EndDialog(hDlg, 0); break; case IDC_D3DS_CANCEL: // Code 2 zurückliefern; das bedeutet: Dialog abgebrochen EndDialog(hDlg, 2); break; } break; default: // Standardverarbeitung der Nachricht return FALSE; break; } // Nachricht wurde verarbeitet. return TRUE; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
1>------ Erstellen gestartet: Projekt: Beispielprogramm 2, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>Direct3DEnum.cpp 1>d:\program files\tribase\include\dshowbaseclasses\wxutil.h(195) : warning C4312: 'Typumwandlung': Konvertierung von 'LONG' in größeren Typ 'PVOID' 1>d:\eigene dateien\visual studio 2005\projects\3dprogrammierung\allgemeines\direct3denum.cpp(938) : error C2440: 'Initialisierung': 'char [256]' kann nicht in 'LPWSTR' konvertiert werden 1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat. 1>d:\eigene dateien\visual studio 2005\projects\3dprogrammierung\allgemeines\direct3denum.cpp(957) : error C2440: 'Initialisierung': 'char [256]' kann nicht in 'LPWSTR' konvertiert werden 1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat. 1>Das Buildprotokoll wurde unter "file://d:\Eigene Dateien\Visual Studio 2005\Projects\3DProgrammierung\Kapitel 2\Beispielprogramm 02\Beispielprogramm 2\Debug\BuildLog.htm" gespeichert. 1>Beispielprogramm 2 - 2 Fehler, 1 Warnung(en) |
Werbeanzeige