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 |
// Debugfunktion HRESULT Debug(HRESULT hrTest, char* cExpression, char* cFuncName, char* cFileName, int iLine) { // Falls Ausdruck gescheitert ist if(FAILED(hrTest)) { // Logbucheintrag vorformatieren char c_logbucheintrag[4096]; sprintf_s(c_logbucheintrag,"Error: %s failed!\n\tFile: [%s]\n\tFunction: [%s]\n\tLine: [%d]" "\n\tReturned HRESULT: [%d]",cExpression, cFileName, cFuncName, iLine, hrTest); // Logbucheintrag schreiben WriteLog(c_logbucheintrag,G3X_ERROR); return S_FALSE; } return S_OK; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
// Makro zum Debuggen #define G3X_DEBUG(LOGFILE,EXPRESSION) \ if(LOGFILE->m_bIsReady) { \ m_hr=LOGFILE->Debug(EXPRESSION,#EXPRESSION,__FUNCDNAME__,__FILE__,__LINE__); \ if(FAILED(m_hr)) return m_hr; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
// Initialisieren einer Tastatur HRESULT InitKeyboard(HWND hWnd, HINSTANCE hInst, G3XLogfile* test, DWORD dwCooperative=DISCL_BACKGROUND|DISCL_NONEXCLUSIVE) { G3X_DEBUG(test,DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(VOID**)&m_lpDinput,NULL)); G3X_DEBUG(test,m_lpDinput->CreateDevice(GUID_SysKeyboard,&m_lpDevice,NULL)); G3X_DEBUG(test,m_lpDevice->SetDataFormat(&c_dfDIKeyboard)); G3X_DEBUG(test,m_lpDevice->SetCooperativeLevel(hWnd,dwCooperative)); return S_OK; } |
C-/C++-Quelltext |
|
1 |
#include "G3XKeyboard.h"
|
Da ich tippfaul bin hab ich mir gleich ein Makro gebaut:
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 |
#include <Psapi.h> #include <dsetup.h> #include <fstream> #include <time.h> #include <d3d9.h> #include <string> #include <map> #include <vector> // ... // Logbücher class G3XLogfile { public: // Status bool m_bIsReady; // Logbuch-Ausgabestream std::ofstream m_ofLogfile; G3XLogfile() { m_bIsReady=false; } ~G3XLogfile() { Release(); } // Debugfunktion HRESULT Debug(HRESULT hrTest, char* cExpression, char* cFuncName, char* cFileName, int iLine) { // Falls Ausdruck gescheitert ist if(FAILED(hrTest)) { // Logbucheintrag vorformatieren char c_logbucheintrag[4096]; sprintf_s(c_logbucheintrag,"Error: %s failed!\n\tFile: [%s]\n\tFunction: [%s]\n\tLine: [%d]" "\n\tReturned HRESULT: [%d]",cExpression, cFileName, cFuncName, iLine, hrTest); // Logbucheintrag schreiben WriteLog(c_logbucheintrag,G3X_ERROR); return S_FALSE; } return S_OK; } // Logdatei erzeugen HRESULT CreateLogFile(char* cFileName) { // ... m_bIsReady=true; return S_OK; } // Eintrag ins Logbuch schreiben HRESULT WriteLog(char* cEntry, int iLevel=G3X_INFO) { // ... return S_OK; } // Logbuch herunterfahren (+beinhaltet schließen) HRESULT Release(void) { // ... m_ofLogfile.close(); return S_OK; } // Logbuch schließen void CloseLogFile(void) { // ... m_bIsReady=false; } } }; // Makro zum Debuggen #define G3X_DEBUG(LOGFILE,EXPRESSION) \ if(LOGFILE->m_bIsReady) { \ m_hr=LOGFILE->Debug(EXPRESSION,#EXPRESSION,__FUNCDNAME__,__FILE__,__LINE__); \ if(FAILED(m_hr)) return m_hr; } |
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 |
#include <dinput.h> #include "G3XLogfile.h" // Tastaturverwaltungsklasse class G3XKeyboard : public G3XLogfile { public: LPDIRECTINPUT8 m_lpDinput; LPDIRECTINPUTDEVICE8 m_lpDevice; HRESULT m_hr; bool m_bKeys[256]; // Initialisieren einer Tastatur HRESULT InitKeyboard(HWND hWnd, HINSTANCE hInst, G3XLogfile* test, DWORD dwCooperative=DISCL_BACKGROUND|DISCL_NONEXCLUSIVE) { G3X_DEBUG(test,DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(VOID**)&m_lpDinput,NULL)); G3X_DEBUG(test,m_lpDinput->CreateDevice(GUID_SysKeyboard,&m_lpDevice,NULL)); G3X_DEBUG(test,m_lpDevice->SetDataFormat(&c_dfDIKeyboard)); G3X_DEBUG(test,m_lpDevice->SetCooperativeLevel(hWnd,dwCooperative)); return S_OK; } }; |
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 |
#include <dinput.h> #include <Windows.h> // Man beachte: Hier wird die Datei "G3XLogfile.h" ebenso wie "G3XKeyboard.h" eingebunden! #include "G3XDirect3D.h" #include "G3XKeyboard.h" #include "G3XLogfile.h" #pragma comment(lib,"dinput8.lib") #pragma comment(lib,"dxguid.lib") LRESULT WINAPI windowproc(HWND,UINT,WPARAM,LPARAM); // Globale Variablen: HWND hWnd; G3XDirect3D D3D; G3XKeyboard keybdr; G3XLogfile Logbuch; // int _stdcall WinMain(blablabla) // ... // ... // ... LRESULT WINAPI windowproc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_CREATE: { Logbuch.CreateLogFile("C:\\test.txt"); D3D.InitDirect3D(hWnd,GetModuleHandle(nullptr),false); // Hier krachts! // Es wird versucht, G3XLogfile mit int* (->Adresse von 'Logbuch') zu initialisieren?? keybdr.InitKeyboard(hWnd,GetModuleHandle(nullptr), & Logbuch /* Fehler?*/ ); break; } // ... case WM_CLOSE: { Logbuch.WriteLog("This is a test"); DestroyWindow(hWnd); break; } // ... } return DefWindowProc(hWnd,msg,wParam,lParam); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <Windows.h> #include "G3XDirect3D.h" #include "G3XKeyboard.h" #include "G3XLogfile.h" // Weg damit!!! LRESULT WINAPI windowproc(HWND,UINT,WPARAM,LPARAM); HWND hWnd; G3XDirect3D D3D; G3XKeyboard keybdr; G3XLogfile Logbuch; int _stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char* lpCmdLine, int nShowCmd) { WNDCLASSEX wcx; |
Werbeanzeige