Accueil > Forum > > > > C/API Win32 - Problème avec System Try....
C/API Win32 - Problème avec System Try....
jeudi 29 avril 2004 à 00:17:49 |
C/API Win32 - Problème avec System Try....

JimyRyan
|
Bonjour. J'ai un programme d'on j'ai créé une interface graphique en C/API Win32. Mon derrnier problème avant de cloturer le developpement de mon prog et le système try. La compilation ce passe bien, mais que je le lance mon prog ce ferme aussi tot. Je ne comprend pas etant donner que j'ai fait que du "copier/coller" d'un du code d'un de mes ancien prog. Petite info : je suis sous Visual Studio 2003 Compilation mode C++ Je souhait que quand ma fenetre ce femre, elle ce reduit dans le system try, un clique gauche dessus permet de la faire revenir. Merci de votre aide. Voici mon code : #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include "ASM_GRA_Header.h" #include "AllHeader.h" #include "resource.h" //Ne pas le modifier manuellement - generer automatiquement par VS #define MYWM_NOTIFYICON (WM_APP+100)
#define WM_MYBMP (WM_USER+1)
POINT Point; static NOTIFYICONDATA tnd; static HMENU hMenuContex;
char DateNextChaine[101]; long CurTimeSecTotal = 0; long CurTimeSecTotalTMP = 0; int canSend2 = 0; //verifie qu'un seul mail ne part par intervalle //Declaration de la fonction de listage de dossier void LinstingContenuDossier(char ChemainDeRechercheAvecExtension[],struct ListeFichier_Type ListeFichier[],int* numeroFichierEnCour); char intervalMinHeureChaine[20]; int canSend = 0 ; //verification de l'heure, envoie interdi apres 00H, reprise a 7H //Declaration - La gestion des messages provenant de windows LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam); long NextSendSeconde = 0; int intervalMinHeure = 0; SYSTEMTIME CurrentTime; char CurrentTimeChaine[101]; long CurrentTimeSec = 0; LPFILETIME lpCreationTime; LPFILETIME lpLastAccesTime; LPFILETIME lpLastWriteTime; int needMAJ = 1; //0 : pas de mise a jour | 1 : mise a jour int i_Dest = 0; int numeroFichierEnCour = 0; int status = 0; //Pour l'affichage du status : 0=>Ready; 1=>ON; => 2 => OFF
void icone(HWND hdlg)//ajoute l'icone du prog dans le titre de la fenetre ainsi que dans la barre des taches { //On ajoute l'icone dans la barre de titre SendMessage(hdlg,WM_SETICON,TRUE,(LPARAM) LoadIcon((HINSTANCE)GetWindowLong(hdlg,GWL_HINSTANCE),MAKEINTRESOURCE(ID_ICON1)));
//On ajoute l'icone dans le systray lstrcpyn(tnd.szTip,"AutoSendMail v1.0",sizeof(tnd.szTip)); tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; tnd.uID = (UINT)IDI_WINLOGO; tnd.cbSize = sizeof(NOTIFYICONDATA); tnd.hWnd = hdlg; tnd.uCallbackMessage = MYWM_NOTIFYICON; tnd.hIcon = (HICON)LoadIcon((HINSTANCE)GetWindowLong(hdlg,GWL_HINSTANCE),MAKEINTRESOURCE(ID_ICON1)); if(Shell_NotifyIcon(NIM_ADD,&tnd) == 0) MessageBox(hdlg,"Erreur de Shell_NotifyIcon","AutoSendMail - Alpha 4",MB_ICONEXCLAMATION|MB_OK); hMenuContex = LoadMenu((HINSTANCE)GetWindowLong(hdlg,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG1)); hMenuContex = GetSubMenu(hMenuContex,0); }
//Le main du prog (interface graphique) int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { HWND hDlg; //créer la fenetre - cette fenetre ce base sur la ressource déclarer au deux paramètre hDlg=CreateDialog(hInstance,(LPCTSTR)IDD_DIALOG1,NULL,(DLGPROC)MainProc);
//affiche la fenetre qui vien d'etre cree ShowWindow(hDlg,SW_SHOW);
SetTimer(hDlg,NULL,1000,NULL); //demande que windows envoie toute les 60000 millisecondes (1 min) un timer //Récupere les info et traite les message de notre fenetre MSG msg; //GetMessage => bon pour des signaux envoyer tres souvant (tout les 5 ms au max) while(GetMessage(&msg,hDlg,0,0)==TRUE) //Si on clique sur la croit, FALSE est envoyer, le while est finit { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; }
//Gestion des messages recut de la fenetre LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam) { int selectCMD; BSTR pzValue; VARIANT variante;
//Ici arrive tous les messages windows switch(message) {
case WM_MYBMP: PostMessage(Dlg, WM_COMMAND, IDCANCEL, 0); return 0;
case WM_SIZE: //Si la fenêtre est réduite, on la fait disparaître if(wParam == SIZE_MINIMIZED) { ShowWindow(Dlg,SW_HIDE); EnableMenuItem(hMenuContex,IDD_DIALOG1,MF_ENABLED); } break;
case MYWM_NOTIFYICON: //Gestion des messages du systray lstrcpyn(tnd.szTip,"AutoSendMail - Alpha 4",sizeof(tnd.szTip)); //Titre quand on laisse la souris sur le tray Shell_NotifyIcon(NIM_MODIFY,&tnd); switch (lParam) { case WM_RBUTTONDOWN://si on clique sur le tray avec le clique droit
GetCursorPos(&Point); TrackPopupMenu(hMenuContex,0,Point.x,Point.y,0,Dlg,NULL); break;
case WM_LBUTTONDOWN: //si on clique sur le tray avec le clique gauche ShowWindow(Dlg,SW_SHOWDEFAULT); //fait réapparaitre la fenètre SetForegroundWindow(Dlg); //au premier plan
GetCursorPos(&Point); TrackPopupMenu(hMenuContex,0,Point.x,Point.y,0,Dlg,NULL); break; } break;
//Ici on traite les messages en provenance des actions effectuee sur la fenetre case WM_COMMAND: selectCMD=LOWORD(wParam); switch(selectCMD) { //Relatif a ce qui a été déclarer dans la ressource
//Envoie imédiat : retard le prochaine envoi case ID_Now: ShellExecute(Dlg, "open", "AutoSendMai-SMTP.exe", 0, 0, SW_SHOWDEFAULT); break;
//lancement mode d'envoie automatique case ID_Start: status = 1; SetDlgItemText(Dlg,ID_Status,(LPCSTR) "ON"); needMAJ =1; break; case ID_OK: //Recup l'intervalle saisie dans la fenetre GetDlgItemText(Dlg,IDC_EDIT3,(LPSTR) intervalMinHeureChaine,21); sscanf(intervalMinHeureChaine,"%d",&intervalMinHeure); needMAJ =1; break;
//arret du mode automatique case ID_Stop: status = 2; SetDlgItemText(Dlg,ID_Status,(LPCSTR) "OFF"); needMAJ =1; break;
case IDCANCEL://Correspond a la croit rouge - si on clique dessus, la fenetre ce ferme DestroyWindow(Dlg); //Permet en trotre que le process soit killer quand on quite EndDialog(Dlg,0);//ferme la fentre mais pas le prog break; }//Fin switch(selectCMD) case WM_INITDIALOG: icone(Dlg); SetClassLong(Dlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION)); PostMessage(Dlg, WM_MYBMP, 0, 0); break;
case WM_DESTROY: PostQuitMessage(0); return 0; break;
case WM_TIMER: //le time, a intervalle de temps réguliger windows envoie ce message if (needMAJ == 1) //Mise a jour effectuée { LogReader(Dlg,ID_LastDate,0,"Date du dernier envoi"); //Affiche la date de la derrniere execution LogReader(Dlg,ID_Last_File,0,"Derrnier fichier envoyer"); //Affiche le derrnier fichier envoyer LogReader(Dlg,ID_LAST_MSG,0,"Dernier message envoyer"); //Affiche le derrnier MSG envoyer LogReader(Dlg,ID_Dest,1,"List dest");
needMAJ = 0; //Stop la mise a jours jusqu'a prochain evenement
if (status == 0) SetDlgItemText(Dlg,ID_Status,(LPCSTR) "Ready"); else if (status == 1) SetDlgItemText(Dlg,ID_Status,(LPCSTR) "ON"); else SetDlgItemText(Dlg,ID_Status,(LPCSTR) "OFF");
sprintf(intervalMinHeureChaine,"%d",intervalMinHeure); SetDlgItemText(Dlg,ID_Interval,(LPCSTR) intervalMinHeureChaine); }//fin de l'affichage des stat
if(status == 1) { CurrentTimeSec = time(NULL); //Recuper la date courante GetLocalTime(&CurrentTime); if (NextSendSeconde <= CurrentTimeSec) { srand(time(NULL));//Genere un nb alea pour ne pas faire trop programme NextSendSeconde = CurrentTimeSec + intervalMinHeure*3600 + ((rand()%60)*60); //le prochian envoie possible est cette date (en sec sans annee ni moi) canSend2 = 1; CurTimeSecTotalTMP = time(NULL); CurTimeSecTotal = CurTimeSecTotalTMP + NextSendSeconde - CurrentTimeSec; strcpy(DateNextChaine,asctime(localtime((time_t*)&CurTimeSecTotal))); //affichage la date du prochiane envoie SetDlgItemText(Dlg,ID_Next,(LPCSTR) DateNextChaine); }
if (CurrentTime.wHour >= 7) //Envoie possible a partir de 7H jusqu'a 23H59 canSend = 1;
if (status == 1 && canSend == 1 && canSend2 == 1) { ShellExecute(Dlg, "open", "AutoSendMai-SMTP.exe", 0, 0, SW_SHOWDEFAULT); canSend2 = 0; //Le mail a ete envoyer une mise a jour de la fenetre doit etre faite needMAJ =1; } }//Fin de la boucle d'envoie du mail auto - gestion de l'intervalle des envoie inclus else { NextSendSeconde = 0; //reinitialisation CurTimeSecTotal = time(NULL); //Recuper la date courante strcpy(DateNextChaine,asctime(localtime((time_t*)&CurTimeSecTotal))); //affichage la date du prochiane envoie SetDlgItemText(Dlg,ID_Next,(LPCSTR) DateNextChaine); }
return TRUE;
break;
//On taite les cas non definit default://on traite les cas inconnus return FALSE; }//Fin switch(message) return TRUE; }//Fin MainProc
|
|
|
Cette discussion est classée dans : case, wm, id, dlg, tnd
Répondre à ce message
Sujets en rapport avec ce message
Probleme de gestion de clavier win32 [ par fourne ]
bonjour,Alors voila je m explique , je fait un logiciel de mix audio tyoe mixman studion pour ceux qui connaissent ... le principe de ce soft est d at
case WM_MOUSEMOVE [ par leprov ]
salut a tous.dans une source, le prog est ajouté a la systray pas une fenetre, et on traite le cas WM_MOUSEMOVE de la maniere suivante (source brunews
redessiner un bouton après appui [ par tdeco ]
SalutEn fait j'ai une boite de dialogue où j'ai plusieurs boutons. Sur j'appui d'un bouton, je modifie une variable, puis j'envoie un message WM_DRAWI
Déplacement d'une dlg sans barre de titre ? [ par liv ]
Bonjour, Je suis sous Visual C++ .NET en MFC et j'ai une boîte de dialogue sans barre de titre que je souhaiterais pouvoir déplacer quand je clique su
WM_MOUSELEAVE [ par JackosKing ]
Pkoi j'ai l'erreur suivante:E:\tmp\TinyShell\Twiny.cpp(89) : error C2065: 'WM_MOUSELEAVE' : undeclared identifierquabnd je fais: case WM_MOUSEMOVE :
probleme.. wm_syscommand [ par Gizmoz ]
J'ai un problème lorsque je crée une fenetre windows, normal sans mfc, et que je traite le msg wm_syscommand de la facon suivante:case WM_SYSCOMMAND :
CreateWindowEx [ par Galmiza ]
Salut,J'ai fait une application en plein ecran en utilisant la fonction CreateWindowEx et directX. (pour l'instant j'ai desactivé les textures)L'appui
plus de precisions pour la communication multiple stp !!! [ par Xs ]
salut !bon, recement, j'ai posté un msg demandant comment faire plusieurs boites de dialog(cf : plusieurs dialogs [API])bon, comme dit, ca marche.mais
Screenmate defectueux [ par anthraxx ]
Anthrax ignisque -- Le charbon et le feu J'essaye de faire un screenmate (une petite bestiole se promenant sur les fenetres), mais n'etant pas tres ex
Question sur les WM_* [ par guitoulefoux ]
Bonjour,J'ai une petite question.J'ai un code de se type:(en super simplifié)[...]switch(mssg) { case WM_KEYDOWN: if(Param == VK_UP) { mes
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|