begin process at 2012 05 28 12:55:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

C/API Win32 - Problème avec System Try....


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

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 1,248 sec (3)

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