Erreur Api Windows

Erreur Api Windows - C - Programmation

Marsh Posté le 27-01-2006 à 23:36:07    

Voici les messages du compilateur:
  [Linker error] undefined reference to `GetOpenFileNameA@4'  
  ld returned 1 exit status  
 C:\Documents and Settings\Pcsnake\Mes documents\programmation\Essais\cryptage\Cryptage sous Win32\Makefile.win [Build Error]  [Cryptage.exe] Error 1  
 
Je ne trouve pas l'erreur la dedans:

Code :
  1. #include <windows.h>
  2. #define IDM_QUIT 1
  3. #define IDM_OPEN 2
  4. HINSTANCE hinst;
  5. LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
  6. int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  7. {
  8.     HWND hwnd;
  9.     HMENU hMenu, hSousMenu;
  10.    
  11.     hinst = hinstance;
  12.    
  13.     WNDCLASS wc;
  14.     wc.style = 0;
  15.     wc.lpfnWndProc = MainWndProc;
  16.     wc.cbClsExtra = 0;
  17.     wc.cbWndExtra = 0;
  18.     wc.hInstance = hinstance;
  19.     wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  20.     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  21.     wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
  22.     wc.lpszMenuName = NULL;
  23.     wc.lpszClassName = "MaWinClass";
  24.    
  25.     if(!RegisterClass(&wc)) return FALSE;
  26.    
  27.     hSousMenu = CreateMenu();
  28.     AppendMenu(hSousMenu, MF_STRING, IDM_OPEN, "Ouvrir..." );
  29.     AppendMenu(hSousMenu, MF_SEPARATOR, 0, NULL);
  30.     AppendMenu(hSousMenu, MF_STRING, IDM_QUIT, "Quitter" );
  31.     hMenu = CreateMenu();
  32.     AppendMenu(hMenu, MF_POPUP, (UINT)hSousMenu, "Fichier" );
  33.    
  34.     hwnd = CreateWindow ("MaWinClass","Cryptage/Decryptage",WS_OVERLAPPEDWINDOW,
  35.                     CW_USEDEFAULT,CW_USEDEFAULT,800,600,NULL,hMenu,hinstance,NULL);
  36.                    
  37.     if (!hwnd) return FALSE;
  38.    
  39.     ShowWindow(hwnd, nCmdShow);
  40.    
  41.     UpdateWindow(hwnd);
  42.    
  43.     MSG msg;
  44.    
  45.     while (GetMessage(&msg, NULL,0,0))
  46.     {
  47.           TranslateMessage(&msg);
  48.           DispatchMessage(&msg);
  49.     }
  50.     return msg.wParam;
  51. }
  52. /******************************************************************************/
  53. LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  54. {
  55.         static HWND hEdit;
  56.         static BOOL EditNotChg = TRUE;
  57.                
  58.         switch (uMsg)
  59.         {
  60.                case WM_CREATE:
  61.                     hEdit = CreateWindow("edit","Tapez ici votre message à crypter/décrypter",
  62.                           WS_CHILD|ES_WANTRETURN|WS_VSCROLL|ES_MULTILINE|WS_VISIBLE,
  63.                           0,0,0,0,hwnd, NULL, hinst, NULL);
  64.                     /*hwnd = CreateWindow ("MaWinClass","Cryptage/Decryptage",WS_OVERLAPPEDWINDOW,
  65.                     CW_USEDEFAULT,CW_USEDEFAULT,800,600,NULL,hMenu,hinstance,NULL);*/
  66.                     return 0;
  67.              
  68.                case WM_COMMAND:
  69.                     if(HIWORD(wParam) == EN_CHANGE) EditNotChg = FALSE;
  70.                     if(LOWORD(wParam) == IDM_QUIT) PostMessage(hwnd, WM_CLOSE, 0, 0);
  71.                     OPENFILENAME ofn;
  72.                     CHAR szFile[MAX_PATH]={0};
  73.                     if(LOWORD(wParam) == IDM_OPEN)
  74.                     {
  75.                           OPENFILENAME ofn;
  76.                           CHAR szFile[MAX_PATH]={0};
  77.                          
  78.                           ZeroMemory(&ofn, sizeof(OPENFILENAME));
  79.                           ofn.lStructSize = sizeof (OPENFILENAME);
  80.                           ofn.hwndOwner = hwnd;
  81.                           ofn.lpstrFile = szFile;
  82.                           ofn.nMaxFile = MAX_PATH;
  83.                           ofn.lpstrFilter =
  84.                           "Fichier source C\0*.c\0Fichier source CPP\0*.cpp\0";
  85.                           ofn.nFilterIndex = 1;
  86.                           ofn.Flags =
  87.                           OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
  88.                     }
  89.                     if (GetOpenFileName(&ofn)==TRUE)
  90.                     {
  91.                           HANDLE hf;
  92.                           DWORD FileSize,nbcharRead;
  93.                           char *buffer;
  94.                          
  95.                           hf = CreateFile(szFile, GENERIC_READ, 0, NULL,
  96.                           OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  97.                           FileSize = GetFileSize(hf, NULL);
  98.                           buffer = (PCHAR)LocalAlloc(LMEM_FIXED, FileSize + 1);
  99.                           ReadFile(hf, buffer, FileSize, &nbcharRead, NULL);
  100.                           buffer[FileSize] = 0;
  101.                           SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)buffer);
  102.                           LocalFree(buffer);
  103.                           CloseHandle(hf);
  104.                           }
  105.                     return 0;
  106.              
  107.                case WM_SIZE:
  108.                     MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
  109.                     return 0;
  110.              
  111.                case WM_CLOSE:
  112.                     if(EditNotChg ||
  113.                        MessageBox(hwnd,"Le texte à été modifié.\r\nEtes vous sûr(e) de vouloir fermer l'application?",
  114.                        "Question ?", MB_YESNO|MB_ICONQUESTION) == IDYES)
  115.                        DestroyWindow(hwnd);
  116.                     return 0;
  117.                    
  118.                case WM_DESTROY:
  119.                     PostQuitMessage(0);
  120.                     return 0;
  121.                    
  122.                default:
  123.                        return DefWindowProc(hwnd, uMsg, wParam, lParam);
  124.         }
  125. }


---------------
Non pas maintenant
Reply

Marsh Posté le 27-01-2006 à 23:36:07   

Reply

Marsh Posté le 28-01-2006 à 00:01:01    

C'est une erreur au niveau de l'éditeur de lien, pas au niveau du compilateur, ni à l'exécution, donc le code n'est pas en cause, juste une bibliothèque absente dans le paramètrage du projet qu'il faut rajouter. J'ai déjà eu ce problème-là avec GetOpenFileName(). Je n'arrive plus à me souvenir du nom de la bibliothèque manquante (genre libcomctl32), mais elle ne devrait pas être très difficile à trouver.

Reply

Marsh Posté le 28-01-2006 à 08:59:03    

olivthill a écrit :

C'est une erreur au niveau de l'éditeur de lien, pas au niveau du compilateur, ni à l'exécution, donc le code n'est pas en cause, juste une bibliothèque absente dans le paramètrage du projet qu'il faut rajouter.


 
http://msdn.microsoft.com/library/ [...] lename.asp
 
comdlg32


Message édité par Emmanuel Delahaye le 28-01-2006 à 09:00:51

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed