Bonjour,
J'ai passé un moment à consulter les nombreux messages qui traitent de problèmes d'édition de lien (en particulier LNK2019), mais je n'y ai pas trouvé d'explication ou de solution à mon problème.
J'ai peu d'expérience en programmation windows en C++, et j'utilise Visual C++ 2008.
Afin de m'initier à l'API win32 et aux MFC, je souhaite réaliser une application dont la fenêtre principale est créée via l'API CreateWindowEx, et que par la suite je puisse utiliser les MFC pour afficher, par exemple, des fenêtres de type CDialog.
J'ai créé un projet de type "Projet Win32", puis j'ai sélectionné "Application Windows" et j'ai coché "Projet vide".
J'ai ensuite ajouté à mon projet vide un fichier 'win32.cpp' dans lequel j'ai placé le code que j'ai trouvé à cette adresse : http://bob.developpez.com/tutapiwin/article_2.php.
Le programme fonctionne mais comme je souhaite inclure le support des MFC, je suis allé dans les propriétés du projet, et j'ai remplacé "Utiliser les bibliothèques windows standart" par "Utiliser les MFC dans une bibliothèque statique".
Suite à cela j'ai eu 14 erreurs lors de l'édition de lien. J'ai donc ajouté la ligne suivante :
Il reste encore 1 erreur, que je n'arrive pas à résoudre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #pragma comment(lib,"user32.lib")
Dans les propriétés du projetLIBCMTD.lib(wwincrt0.obj) : error LNK2019: symbole externe non résolu _wWinMain@16 référencé dans la fonction ___tmainCRTStartup
- Le point d'entrée de l'application : wWinMainCRTStartup
- Le sous-système sélectionné : /SUBSYSTEM:WINDOWS
- Unicode est activé
Le projet ne contient qu'un seul fichier 'win32.cpp' avec le code suivant :
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
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 #pragma comment(lib,"user32.lib") #include <windows.h> // Declaration du Callback de la fenêtre principale LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam); // Point d'entrée principal int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // Declaration de la fenetre principale de l'application WNDCLASSEX principale; principale.cbSize=sizeof(WNDCLASSEX); principale.style=CS_HREDRAW|CS_VREDRAW; principale.lpfnWndProc=MainProc; principale.cbClsExtra=0; principale.cbWndExtra=0; principale.hInstance=hInstance; principale.hIcon=LoadIcon(NULL,IDI_APPLICATION); principale.hCursor=LoadCursor(NULL,IDC_ARROW); principale.hbrBackground=reinterpret_cast<HBRUSH>(COLOR_WINDOW+1); principale.lpszMenuName=NULL; principale.lpszClassName=L"std"; principale.hIconSm=LoadIcon(NULL,IDI_APPLICATION); RegisterClassEx(&principale); // Création de la fenêtre principale HWND hWnd; hWnd=CreateWindowEx( WS_EX_CLIENTEDGE, L"std", L"Notre fenêtre", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); // Affichage de la fenêtre ShowWindow(hWnd,SW_SHOW); // Gestion des messages MSG msg; while(GetMessage(&msg,NULL,0,0)==TRUE) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } // Callback de gestion des evenements (messages) de la fenetre principale LRESULT CALLBACK MainProc(HWND hWnd, UINT mes, WPARAM wParam, LPARAM lParam) { HDC hDC; PAINTSTRUCT paintst; switch (mes) { case WM_PAINT: hDC=BeginPaint(hWnd,&paintst); EndPaint(hWnd,&paintst); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd, mes, wParam, lParam); } }
Partager