!code OK ?rien ne s'affiche !je m'arrache les tiffs

etaxi Messages postés 24 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 24 mars 2008 - 28 juil. 2007 à 09:56
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 28 juil. 2007 à 18:45
Je salut tout le monde tout de même.
voilà, j'ai trois fichiers:
un.c
un.h
un.rc
le projet se compile sans erreurs.
ce n'est pas une usine à gaz
d'apparence c'est simple comme programme.
Mais rien ne s'affiche à l'exécution!? :(

si je peux me permettre
voici le main.c

#include <windows.h>
#include <cstdio>
#include "resource.h"

using namespace std;

#ifdef __BORLANDC__
#pragma argsused
#endif
HWND hWnd;
HINSTANCE hInst;
LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
//---------------------------------------------------------------------------
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_CONTROLS_DLG),
hWnd, reinterpret_cast<DLGPROC>(DlgProc));

hInst = hInstance;

return 0;
}
//---------------------------------------------------------------------------
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{

char strHourlySalary[20], strMonday1[10], strTuesday1[10], strWednesday1[10],
strThursday1[10], strFriday1[10], strSaturday1[10], strSunday1[10],
strMonday2[10], strTuesday2[10], strWednesday2[10],
strThursday2[10], strFriday2[10], strSaturday2[10], strSunday2[10];

double monday1 0.00, tuesday1 0.00, wednesday1 = 0.00, thursday1 = 0.00,
friday1 0.00, saturday1 0.00, sunday1 = 0.00,
monday2 0.00, tuesday2 0.00, wednesday2 = 0.00, thursday2 = 0.00,
friday2 0.00, saturday2 0.00, sunday2 = 0.00;

HWND hWndHourlySalary, hWndMonday1, hWndTuesday1, hWndWednesday1,
hWndThursday1, hWndFriday1, hWndSaturday1, hWndSunday1,
hWndMonday2, hWndTuesday2, hWndWednesday2,
hWndThursday2, hWndFriday2, hWndSaturday2, hWndSunday2,
hWndRegularHours, hWndOvertimeHours,
hWndRegularAmount, hWndOvertimeAmount,
hWndNetPay;

double totalHoursWeek1, totalHoursWeek2, ovtSalary;
double regHours1 0.00, regHours2 0.00, ovtHours1 = 0.00, ovtHours2 = 0.00;
double regAmount1 0.00, regAmount2 0.00, ovtAmount1 = 0.00, ovtAmount2 = 0.00;

char strRegularHours[20], strOvertimeHours[20];
double regularHours, overtimeHours;
char strRegularAmount[20], strOvertimeAmount[20], strNetPay[20];
double regularAmount, overtimeAmount, netPay;

double hourlySalary = 0.00;

hWndHourlySalary = GetDlgItem(hWndDlg, IDC_HOURLY_SALARY);
hWndMonday1 = GetDlgItem(hWndDlg, IDC_MONDAY1);
hWndTuesday1 = GetDlgItem(hWndDlg, IDC_TUESDAY1);
hWndWednesday1 = GetDlgItem(hWndDlg, IDC_WEDNESDAY1);
hWndThursday1 = GetDlgItem(hWndDlg, IDC_THURSDAY1);
hWndFriday1 = GetDlgItem(hWndDlg, IDC_FRIDAY1);
hWndSaturday1 = GetDlgItem(hWndDlg, IDC_SATURDAY1);
hWndSunday1 = GetDlgItem(hWndDlg, IDC_SUNDAY1);

hWndMonday2 = GetDlgItem(hWndDlg, IDC_MONDAY2);
hWndTuesday2 = GetDlgItem(hWndDlg, IDC_TUESDAY2);
hWndWednesday2 = GetDlgItem(hWndDlg, IDC_WEDNESDAY2);
hWndThursday2 = GetDlgItem(hWndDlg, IDC_THURSDAY2);
hWndFriday2 = GetDlgItem(hWndDlg, IDC_FRIDAY2);
hWndSaturday2 = GetDlgItem(hWndDlg, IDC_SATURDAY2);
hWndSunday2 = GetDlgItem(hWndDlg, IDC_SUNDAY2);

hWndRegularHours = GetDlgItem(hWndDlg, IDC_REGULAR_HOURS);
hWndOvertimeHours = GetDlgItem(hWndDlg, IDC_OVERTIME_HOURS);
hWndRegularAmount = GetDlgItem(hWndDlg, IDC_REGULAR_AMOUNT);
hWndOvertimeAmount = GetDlgItem(hWndDlg, IDC_OVERTIME_AMOUNT);
hWndNetPay = GetDlgItem(hWndDlg, IDC_NET_PAY);

switch(Msg)
{
case WM_INITDIALOG:
SetWindowText(hWndHourlySalary, "0.00");

SetWindowText(hWndMonday1, "0.00");
SetWindowText(hWndTuesday1, "0.00");
SetWindowText(hWndWednesday1, "0.00");
SetWindowText(hWndThursday1, "0.00");
SetWindowText(hWndFriday1, "0.00");
SetWindowText(hWndSaturday1, "0.00");
SetWindowText(hWndSunday1, "0.00");

SetWindowText(hWndMonday2, "0.00");
SetWindowText(hWndTuesday2, "0.00");
SetWindowText(hWndWednesday2, "0.00");
SetWindowText(hWndThursday2, "0.00");
SetWindowText(hWndFriday2, "0.00");
SetWindowText(hWndSaturday2, "0.00");
SetWindowText(hWndSunday2, "0.00");

return TRUE;

case WM_COMMAND:
switch(wParam)
{
case IDC_PROCESS_BTN:
// Retrieve the hourly salary
GetWindowText(hWndHourlySalary, strHourlySalary, 20);
hourlySalary = atof(strHourlySalary);

// Get the time for each day
GetWindowText(hWndMonday1, strMonday1, 10);
monday1 = atof(strMonday1);
GetWindowText(hWndTuesday1, strTuesday1, 10);
tuesday1 = atof(strTuesday1);
GetWindowText(hWndWednesday1, strWednesday1, 10);
wednesday1 = atof(strWednesday1);
GetWindowText(hWndThursday1, strThursday1, 10);
thursday1 = atof(strThursday1);
GetWindowText(hWndFriday1, strFriday1, 10);
friday1 = atof(strFriday1);
GetWindowText(hWndSaturday1, strSaturday1, 10);
saturday1 = atof(strSaturday1);
GetWindowText(hWndSunday1, strSunday1, 10);
sunday1 = atof(strSunday1);

GetWindowText(hWndMonday2, strMonday2, 10);
monday2 = atof(strMonday2);
GetWindowText(hWndTuesday2, strTuesday2, 10);
tuesday2 = atof(strTuesday2);
GetWindowText(hWndWednesday2, strWednesday2, 10);
wednesday2 = atof(strWednesday2);
GetWindowText(hWndThursday2, strThursday2, 10);
thursday2 = atof(strThursday2);
GetWindowText(hWndFriday2, strFriday2, 10);
friday2 = atof(strFriday2);
GetWindowText(hWndSaturday2, strSaturday2, 10);
saturday2 = atof(strSaturday2);
GetWindowText(hWndSunday2, strSunday2, 10);
sunday2 = atof(strSunday2);

// Calculate the total number of hours for each week
totalHoursWeek1 = monday1 + tuesday1 + wednesday1 + thursday1 +
friday1 + saturday1 + sunday1;
totalHoursWeek2 = monday2 + tuesday2 + wednesday2 + thursday2 +
friday2 + saturday2 + sunday2;

// The overtime is paid time and half
ovtSalary = hourlySalary * 1.5;

// If the employee worked under 40 hours, there is no overtime
if( totalHoursWeek1 < 40 )
{
regHours1 = totalHoursWeek1;
regAmount1 = hourlySalary * regHours1;
ovtHours1 = 0.00;
ovtAmount1 = 0.00;
} // If the employee worked over 40 hours, calculate the overtime
else if( totalHoursWeek1 >= 40 )
{
regHours1 = 40;
regAmount1 = hourlySalary * 40;
ovtHours1 = totalHoursWeek1 - 40;
ovtAmount1 = ovtHours1 * ovtSalary;
}

if( totalHoursWeek2 < 40 )
{
regHours2 = totalHoursWeek2;
regAmount2 = hourlySalary * regHours2;
ovtHours2 = 0.00;
ovtAmount2 = 0.00;
}
else if( totalHoursWeek2 >= 40 )
{
regHours2 = 40;
regAmount2 = hourlySalary * 40;
ovtHours2 = totalHoursWeek2 - 40;
ovtAmount2 = ovtHours2 * ovtSalary;
}

regularHours = regHours1 + regHours2;
overtimeHours = ovtHours1 + ovtHours2;
regularAmount = regAmount1 + regAmount2;
overtimeAmount = ovtAmount1 + ovtAmount2;
netPay = regularAmount + overtimeAmount;

sprintf(strRegularHours, "%.2f", regularHours);
sprintf(strOvertimeHours, "%.2f", overtimeHours);
sprintf(strRegularAmount, "%.2f", regularAmount);
sprintf(strOvertimeAmount, "%.2f", overtimeAmount);
sprintf(strNetPay, "%.2f", netPay);

SetWindowText(hWndRegularHours, strRegularHours);
SetWindowText(hWndRegularAmount, strRegularAmount);
SetWindowText(hWndOvertimeHours, strOvertimeHours);
SetWindowText(hWndOvertimeAmount, strOvertimeAmount);

SetWindowText(hWndNetPay, strNetPay);

return TRUE;

case IDCANCEL:
EndDialog(hWndDlg, 0);
return TRUE;
}
break;
}

return FALSE;
}


et voici le resource.h

#define IDD_CONTROLS_DLG 101
#define IDC_EMPLOYEE_NAME 1002
#define IDC_HOURLY_SALARY 1003
#define IDC_MONDAY1 1004
#define IDC_TUESDAY1 1005
#define IDC_WEDNESDAY1 1006
#define IDC_THURSDAY1 1007
#define IDC_FRIDAY1 1008
#define IDC_SATURDAY1 1009
#define IDC_SUNDAY1 1010
#define IDC_MONDAY2 1011
#define IDC_TUESDAY2 1012
#define IDC_WEDNESDAY2 1013
#define IDC_THURSDAY2 1014
#define IDC_FRIDAY2 1015
#define IDC_SATURDAY2 1016
#define IDC_SUNDAY2 1017
#define IDC_PROCESS_BTN 1018
#define IDC_REGULAR_HOURS 1019
#define IDC_REGULAR_AMOUNT 1020
#define IDC_OVERTIME_HOURS 1021
#define IDC_OVERTIME_AMOUNT 1022
#define IDC_NET_PAY 1023


et enfin voici le resource.rc

#include "resource.h"

IDD_CONTROLS_DLG DIALOG DISCARDABLE 0, 0, 407, 222
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
CAPTION "Employee Payroll"
FONT 8, "MS Sans Serif"

BEGIN
PUSHBUTTON "Close",IDCANCEL,290,185,50,14
GROUPBOX "Employee Identification",IDC_STATIC,10,10,385,40
LTEXT "Employee Name:",IDC_STATIC,20,27,54,8
EDITTEXT IDC_EMPLOYEE_NAME,85,25,115,12,ES_AUTOHSCROLL
LTEXT "Hourly Salary:",IDC_STATIC,210,27,44,8
EDITTEXT IDC_HOURLY_SALARY,260,25,40,12,ES_RIGHT | ES_AUTOHSCROLL
GROUPBOX "Time Sheet",IDC_STATIC,10,55,385,75
LTEXT "Monday",IDC_STATIC,71,71,26,8
LTEXT "Tuesday",IDC_STATIC,120,70,28,8
LTEXT "Wednesday",IDC_STATIC,160,70,39,8
LTEXT "Thursday",IDC_STATIC,210,70,30,8
LTEXT "Friday",IDC_STATIC,260,70,20,8
LTEXT "Saturday",IDC_STATIC,300,70,29,8
LTEXT "Sunday",IDC_STATIC,345,70,25,8
LTEXT "First Week:",IDC_STATIC,20,86,37,8
EDITTEXT IDC_MONDAY1,70,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_TUESDAY1,115,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_WEDNESDAY1,160,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_THURSDAY1,205,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_FRIDAY1,250,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_SATURDAY1,295,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_SUNDAY1,340,85,40,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "Second Week:",IDC_STATIC,20,106,49,8
EDITTEXT IDC_MONDAY2,70,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_TUESDAY2,115,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_WEDNESDAY2,160,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_THURSDAY2,205,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_FRIDAY2,250,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_SATURDAY2,295,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_SUNDAY2,340,105,40,12,ES_RIGHT | ES_AUTOHSCROLL
GROUPBOX "Payroll Processing",IDC_STATIC,10,135,385,75
PUSHBUTTON "Process It",IDC_PROCESS_BTN,25,160,50,35
LTEXT "Hours",IDC_STATIC,140,150,20,8
LTEXT "Amount",IDC_STATIC,185,150,25,8
LTEXT "Regular:",IDC_STATIC,99,166,28,8
EDITTEXT IDC_REGULAR_HOURS,135,165,40,12,ES_RIGHT |
ES_AUTOHSCROLL
EDITTEXT IDC_REGULAR_AMOUNT,180,165,40,12,ES_RIGHT |
ES_AUTOHSCROLL
LTEXT "Overtime:",IDC_STATIC,100,182,31,8
EDITTEXT IDC_OVERTIME_HOURS,136,180,40,12,ES_RIGHT |
ES_AUTOHSCROLL
EDITTEXT IDC_OVERTIME_AMOUNT,180,180,40,12,ES_RIGHT |
ES_AUTOHSCROLL
LTEXT "Net Pay:",IDC_STATIC,255,167,28,8
EDITTEXT IDC_NET_PAY,295,165,40,12,ES_RIGHT | ES_AUTOHSCROLL
END


OU EST CE QUE CA CLOCHE?
Merci de votre aide.

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 juil. 2007 à 10:33
Les HWND s'initialisent 1 seule fois dans WM_INITDIALOG.

ciao...
BruNews, MVP VC++
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 juil. 2007 à 18:45
Salut,
Il y'a un identificateur utilisé dans ton fichier rc qui n'est pas défini dans resource.h. Ajoute le comme ceci:
#define IDC_STATIC            1001

Je me demande comment ton compilateur a laissé passer cette erreur. Je suppose que ton fichier rc est bien ajouté à ton projet.

Tous les identificateurs utilisés dans ton fichier rc doivent être définis dans resources.h. Sinon, ta boite de dialogue ne s'affichera pas.
Rejoignez-nous