Bonjour/Bonsoir;
Voilà, je viens vers vous car je ne trouve aucune solution.
Voici mon "petit" problème: j'essaye de créer une fenêtre principale depuis une DLL. J'ai construis la DLL d'après un tuto que j'ai trouvé sur Internet (source MSDN: https://msdn.microsoft.com/fr-fr/library/ms235636.aspx). Elle fonctionne super bien. J'ai fais quelques modifications et tout ce passe toujours très bien.
Je vous poste les codes complet des deux fichiers de la DLL:
Le fichier header:
Et le fichier cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // anuCore.h #ifdef ANUCORE_EXPORTS #define ANUCORE_API __declspec(dllexport) #else #define ANUCORE_API __declspec(dllimport) #endif //Liste des fichiers inclu #include <Windows.h> //La class de base namespace Anubisas { // This class is exported from the MathFuncsDll.dll class clsWindows { public: static ANUCORE_API HWND acCreateW(HINSTANCE hInst); }; }
Tout compile très bien sans même le moindre warning...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 // anuCore.cpp: Code de toutes les focntions de la DLL #include "stdafx.h" #include "anuCore.h" #include <stdexcept> using namespace std; namespace Anubisas { HWND clsWindows::acCreateW(HINSTANCE hInst) { HWND hWnd(NULL); WNDCLASS wc; wc.style = 0; wc.lpfnWndProc = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1); wc.lpszMenuName = NULL; wc.lpszClassName = L"MaWinClass"; if (!RegisterClass(&wc)) return FALSE; hWnd = CreateWindow(L"MaWinClass", L"Titre", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, hInst, NULL); return hWnd; } }
Mais, avec l'aide des points d'arrêt, quand j'arrive à l’instruction CreateWindow, j'ai une violation d'acccès mémoir. mon IDE, VS 2015, me dit que la variable hWnd est toujours à NULL. Donc, le code plante au niveau de l'appel de CreateWindow.
Je vous place également le code de mes deux fichier de l'application de test.
Le fichier header:
Et le fichier cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #pragma once #include <Windows.h> #include "anuCore.h"
Voilà, j'espère que la description de l'erreur vous permettra de m'aider car là, je ne comprend vraiment pas. Est ce un problème d'instance d'application?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "main.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { //Point d'entré de l'application HWND hWnd(NULL); hWnd = Anubisas::clsWindows::acCreateW(hInstance); return 0; }
Merci d'avoir prit le temps de lire ce post, et merci pour vos futures réponses.
Bien à vous, Anubisas.
Partager