begin process at 2012 05 29 21:44:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème de programmation Win32


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de programmation Win32

mercredi 12 février 2003 à 19:33:28 | Problème de programmation Win32

GUNMAN

J'ai téléchargé la source d'une des personnes ici, je compile, tout va bien, je construit le .exe et il me met :
"Linking...
Cpp1.obj : error LNK2001: unresolved external symbol "long __stdcall WinProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WinProc@@YGJPAUHWND__@@IIJ@Z)
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Cpp1.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

Cpp1.exe - 3 error(s), 0 warning(s)"

(Je suis sur microsoft visual C++)

Voici le code source, dites moi s'il y a un problème :

/*************************************************/

#include <windows.h>

// ID du EditBox
#define ID_EDITBOX 100
// ID du Button
#define ID_BUTTON 101

// Nom de la classe
char MainClassName[] = "GetWindowText";
// Instance du programme
HINSTANCE MainInstance;
// Handle de la fenêtre
HWND MainHandle;
// Handle du EditBox
HWND EditHandle;
// Handle du Button
HWND ButtonHandle;

// Prototype
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);

/*************************************************/

// Entré du programme
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
{

// Pour recevoir et transmettre les messages
MSG msg;
// Pour créé la fenêtre
WNDCLASSEX wc;

// Sauvegarde l'instance
MainInstance = hInstance;

// Création de la classe
wc.hInstance = MainInstance; // Instance du programme
wc.lpszClassName = MainClassName; // Nom de la classe
wc.lpfnWndProc = WinProc; // Procédure qui va recevoir les messages
wc.style = CS_DBLCLKS; // Le style...
wc.cbSize = sizeof(WNDCLASSEX); // Taille de la struct
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // L'icône(grande)
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // L'icône(petite)
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Le curseur
wc.lpszMenuName = NULL; // Menu
wc.cbClsExtra = 0; // ...
wc.cbWndExtra = 0; // ...
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); // BackColor(Couleur de fond)

// Enregistre la classe
if (!RegisterClassEx(&wc))
return 0;

// Crée la fenêtre
MainHandle = CreateWindowEx(0, MainClassName, "GetWindowText (Sample)", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL,hInstance, NULL);

if (MainHandle == NULL)
return 0;

// Cré le EditBox
EditHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_CHILD|
WS_VISIBLE|ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|
ES_WANTRETURN, 0, 0, 535, 300, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);

if (EditHandle == NULL)
return 0;

// Cré le Button
ButtonHandle = CreateWindowEx(0, "BUTTON", "&Afficher le texte", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
5, 305, 140, 40, MainHandle, (HMENU)ID_BUTTON, hInstance, NULL);

if (ButtonHandle == NULL)
return 0;

// Envoie du texte dans le EditBox
SetWindowText(EditHandle, "Appuyer su le bouton [Afficher le texte] pour faire afficher\r\nce texte dans un MessageBox();");

// Affiche la fenêtre
ShowWindow(MainHandle, SW_SHOW);
// Met à jour la fenêtre
UpdateWindow(MainHandle);

// Recoie et transmet les messages
while (GetMessage(&msg, NULL, 0, 0))
{

TranslateMessage(&msg);
DispatchMessage(&msg);

}

// Fin du programme
return msg.wParam;

}

/*************************************************/

// Réception des messages
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

switch (msg)
{
// Ferme le programme
case WM_DESTROY:
PostQuitMessage(0);
break;

// Reception des commandes
case WM_COMMAND:

// Vérifie si on à cliquer sur le bouton
if ((LOWORD(wParam) == ID_BUTTON) && (HIWORD(wParam) == BN_CLICKED))
{

// Va contenir le texte du EditBox
char *LeText = NULL;
// Va contenir le nombres de caractères dans le EditBox
unsigned int TextLen = 0;

// Récupère le nombres de caractères dans le EditBox
TextLen = GetWindowTextLength(EditHandle);
// S'il n'est pas vide
if (TextLen)
{

// Alloue de la mémoire pour stocker le texte
LeText = new char[(TextLen + 2)];
// Récupère le texte
TextLen = GetWindowText(EditHandle, LeText, (TextLen + 1));
// Si aucune erreur et le EditBox contient bien quelque chose
if (TextLen)
{
// Affiche le texte
MessageBox(MainHandle, LeText, "Voila le texte", MB_OK);

}
else
{
// Erreur lors de la récupération du texte
MessageBox(MainHandle, "Erreur lors de la récupération du texte", "Erreur", MB_OK);

}
// Libère la mémoire
delete [] LeText;

}
else
{
// Le EditBox est vide
MessageBox(MainHandle, "Le EditBox est vide!", "Edit Vide", MB_OK);

}

}

default: // Par default...
return DefWindowProc(hwnd, msg, wParam, lParam);
break;

}

return 0;

}

/*************************************************/

L'auteur de ce code est : NitRic_

SVP, pourquoi cela ne veut pas se compiler ?

Merci.
mercredi 12 février 2003 à 23:19:11 | Re : Problème de programmation Win32

Kaid


Je pense que tu t'es trompé de type de projet (actuellement cela doit être un projet de type "Win32 Console Application") alors qu'il faut un projet "Win32 Application" puisqu'il s'agit d'un projet graphique.

-------------------------------
Réponse au message :
-------------------------------

> J'ai téléchargé la source d'une des personnes ici, je compile, tout va bien, je construit le .exe et il me met :
> "Linking...
> Cpp1.obj : error LNK2001: unresolved external symbol "long __stdcall WinProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WinProc@@YGJPAUHWND__@@IIJ@Z)
> LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
> Debug/Cpp1.exe : fatal error LNK1120: 2 unresolved externals
> Error executing link.exe.
>
> Cpp1.exe - 3 error(s), 0 warning(s)"
>
> (Je suis sur microsoft visual C++)
>
> Voici le code source, dites moi s'il y a un problème :
>
> /*************************************************/
>
> #include <windows.h>
>
> // ID du EditBox
> #define ID_EDITBOX 100
> // ID du Button
> #define ID_BUTTON 101
>
> // Nom de la classe
> char MainClassName[] = "GetWindowText";
> // Instance du programme
> HINSTANCE MainInstance;
> // Handle de la fenêtre
> HWND MainHandle;
> // Handle du EditBox
> HWND EditHandle;
> // Handle du Button
> HWND ButtonHandle;
>
> // Prototype
> LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);
>
> /*************************************************/
>
> // Entré du programme
> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow)
> {
>
> // Pour recevoir et transmettre les messages
> MSG msg;
> // Pour créé la fenêtre
> WNDCLASSEX wc;
>
> // Sauvegarde l'instance
> MainInstance = hInstance;
>
> // Création de la classe
> wc.hInstance = MainInstance; // Instance du programme
> wc.lpszClassName = MainClassName; // Nom de la classe
> wc.lpfnWndProc = WinProc; // Procédure qui va recevoir les messages
> wc.style = CS_DBLCLKS; // Le style...
> wc.cbSize = sizeof(WNDCLASSEX); // Taille de la struct
> wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); // L'icône(grande)
> wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // L'icône(petite)
> wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Le curseur
> wc.lpszMenuName = NULL; // Menu
> wc.cbClsExtra = 0; // ...
> wc.cbWndExtra = 0; // ...
> wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); // BackColor(Couleur de fond)
>
> // Enregistre la classe
> if (!RegisterClassEx(&wc))
> return 0;
>
> // Crée la fenêtre
> MainHandle = CreateWindowEx(0, MainClassName, "GetWindowText (Sample)", WS_OVERLAPPEDWINDOW,
> CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL,hInstance, NULL);
>
> if (MainHandle == NULL)
> return 0;
>
> // Cré le EditBox
> EditHandle = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, "EDIT", "", WS_CHILD|
> WS_VISIBLE|ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|
> ES_WANTRETURN, 0, 0, 535, 300, MainHandle, (HMENU)ID_EDITBOX, hInstance, NULL);
>
> if (EditHandle == NULL)
> return 0;
>
> // Cré le Button
> ButtonHandle = CreateWindowEx(0, "BUTTON", "&Afficher le texte", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
> 5, 305, 140, 40, MainHandle, (HMENU)ID_BUTTON, hInstance, NULL);
>
> if (ButtonHandle == NULL)
> return 0;
>
> // Envoie du texte dans le EditBox
> SetWindowText(EditHandle, "Appuyer su le bouton [Afficher le texte] pour faire afficher\r\nce texte dans un MessageBox();");
>
> // Affiche la fenêtre
> ShowWindow(MainHandle, SW_SHOW);
> // Met à jour la fenêtre
> UpdateWindow(MainHandle);
>
> // Recoie et transmet les messages
> while (GetMessage(&msg, NULL, 0, 0))
> {
>
> TranslateMessage(&msg);
> DispatchMessage(&msg);
>
> }
>
> // Fin du programme
> return msg.wParam;
>
> }
>
> /*************************************************/
>
> // Réception des messages
> LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
> {
>
> switch (msg)
> {
> // Ferme le programme
> case WM_DESTROY:
> PostQuitMessage(0);
> break;
>
> // Reception des commandes
> case WM_COMMAND:
>
> // Vérifie si on à cliquer sur le bouton
> if ((LOWORD(wParam) == ID_BUTTON) && (HIWORD(wParam) == BN_CLICKED))
> {
>
> // Va contenir le texte du EditBox
> char *LeText = NULL;
> // Va contenir le nombres de caractères dans le EditBox
> unsigned int TextLen = 0;
>
> // Récupère le nombres de caractères dans le EditBox
> TextLen = GetWindowTextLength(EditHandle);
> // S'il n'est pas vide
> if (TextLen)
> {
>
> // Alloue de la mémoire pour stocker le texte
> LeText = new char[(TextLen + 2)];
> // Récupère le texte
> TextLen = GetWindowText(EditHandle, LeText, (TextLen + 1));
> // Si aucune erreur et le EditBox contient bien quelque chose
> if (TextLen)
> {
> // Affiche le texte
> MessageBox(MainHandle, LeText, "Voila le texte", MB_OK);
>
> }
> else
> {
> // Erreur lors de la récupération du texte
> MessageBox(MainHandle, "Erreur lors de la récupération du texte", "Erreur", MB_OK);
>
> }
> // Libère la mémoire
> delete [] LeText;
>
> }
> else
> {
> // Le EditBox est vide
> MessageBox(MainHandle, "Le EditBox est vide!", "Edit Vide", MB_OK);
>
> }
>
> }
>
> default: // Par default...
> return DefWindowProc(hwnd, msg, wParam, lParam);
> break;
>
> }
>
> return 0;
>
> }
>
> /*************************************************/
>
> L'auteur de ce code est : NitRic_
>
> SVP, pourquoi cela ne veut pas se compiler ?
>
> Merci.
jeudi 13 février 2003 à 17:26:08 | Re : Problème de programmation Win32

vieuxLion

bonjour à vous deux,
comme je suis parfois étourdi,
j'ai trouvé une petite astuce pour modifier le type de projet.
Votre discussion m'y a fait repensé :
http://www.cppfrance.com/article.aspx?Val=1425



-------------------------------
Réponse au message :
-------------------------------

>
> Je pense que tu t'es trompé de type de projet (actuellement cela doit être un projet de type "Win32 Console Application") alors qu'il faut un projet "Win32 Application" puisqu'il s'agit d'un projet graphique.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > J'ai téléchargé la source d'une des personnes ici, je compile, tout va bien, je construit le .exe et il me met :
> > "Linking...
> > Cpp1.obj : error LNK2001: unresolved external symbol "long __stdcall WinProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WinProc@@YGJPAUHWND__@@IIJ@Z)
> > LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
> > Debug/Cpp1.exe : fatal error LNK1120: 2 unresolved externals
> > Error executing link.exe.


Cette discussion est classée dans : texte, hwnd, editbox, wc, mainhandle


Répondre à ce message

Sujets en rapport avec ce message

Pb sur un ptit bout de prog en DirectX.... [ par Haldwin ] Salut a tous....Voila j'ai deux ptits pbs quand je lance cette appli ci-dessous... (VC++)La première est q'une fois sur deux ma variable hWnd apres le Créer editbox ou zone de texte avec du code [ par MegaMickx ] Salut,Comment fait-on pour créer une editbox ou zone de texte a un endroit donné sur une Cdialog uniquement avec du code.Je programme sous [VC++6]Merc editbox vers listbox [ par chiron ] ma question est la suivante,étant novice dans le domaine de visual c++ 6, j' aimerai réaliser l' opération suivante.importer un fichier texte comporta ajout de texte dans editbox [ par Vortex99011 ] Bonjour,afin d'insérer une chaine de caractère dans une EditBox, j'utilisais auparavant SetDlgItemText(...), mais dans un nouveau projet, j'aurais bes ressources et API !!!! [ par Xs ] salut !voila, pour me simplifier la tache, j'utlise les ressources pour creer une boite de dialog (sous VC++ 6).mais j'obtiens, lors de la compilation probleme openGl niveau debutant [ par AmK ] salut je debute en openGL et j'ai du mal a creer une fenetre le compilateur me mets 2 erreurs :PS: les erreurs du compilateur(vc++ 6.0)sont plus bas ! editbox et couleur [ par Anacr0x ] Salut !J'ai deux ou trois ptite question a posé :a votre avis, est il possible d'avoir plusieur couleur de texte dans une editbox (ce qui m'étonneré) Dessiner un texte dans un hwnd en mode non erase.. [ par JackosKing ] lo,voilà pour le moment j'utilisai ceci pour dessiner un texte dans un bdg: char buf[10];// SYSTEMTIME CurrentTime; HFONT hFont; hFont=Creat ouvrir une 2eme fenetre avec editbox et tout et tout, c'est possible? [ par Arnaud16022 ] Hello tout le monde!je voudrais mettre un bouton dans une fenetre (ca c'est facile), mais seulement quand on clique dessus un autre fenetre s'ouvre, a Colorier un static : HEeeeeeeelp !!! [ par sprintjeffC ] salut @ tousje me mets a la programmation windows en C/C++ (pas VC++ merci ... quitte à faire du microsoft je préfère VB ;-). Je démarrai pas mal et t


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales