M
Membre supprimé 2
Invité
j'ai pris le converter.pdf c'est le tutorial de interface builder dans un projet sur projectbuilder donc je suis gentiment l'exemple tiré du Kernigham et richie ( le langage C) qui est le convertisseur de degre Celsius en Fahrenheit (rien de baleze )
donc en suivant ce qui est a coder dans le source du fichier principal dans le projectbuilder je me dis que la compilation devrais se passer sans probleme or j'ai une bonne trentaine d'erreur ( pas genial le truc ) je trouve leur pdf bien gentil mais retaper le code c'est soulant car avec un pdf ya pas de copier coller enfin bref si quelqun peut me dire si il a fait leur exemple et me dire ce qui cloche dans mon code car l'interface a ete bien faites
voici e le code :
/*les rajouts sont ce qui n'est pas dans le source
quand on lance un nouveau projet*/
#include <Carbon/Carbon.h>
//rajout1
/*macro */
#define kConvertCommand 'conv'
#define kConvertSignature 'conv'
#define kFahrenheitFieldID 'conv'
#define kCelsiusFieldID 'conv'
/*prototype*/
pascal OSStatus MainWindowCommandHandler (
EventHandlerCallRef handlerref ,
EventRef event ,
void *userData );
pascal void ConvertCommandHandler ();
//fin rajout1
int main(int argc, char* argv[])
{
IBNibRef nibRef;
WindowRef window;
OSStatus err;
//rajout2
EventTypeSpeccommSpec = { kEventClassCommand , kEventProcessCommand } ;
//fin rajout2
// Create a Nib reference passing the name of the nib file (without the .nib extension)
// CreateNibReference only searches into the application bundle.
err = CreateNibReference(CFSTR("main"), &nibRef);
require_noerr( err, CantGetNibRef );
// Once the nib reference is created, set the menu bar. "MainMenu" is the name of the menu bar
// object. This name is set in InterfaceBuilder when the nib is created.
err = SetMenuBarFromNib(nibRef, CFSTR("MainMenu"));
require_noerr( err, CantSetMenuBar );
// Then create a window. "MainWindow" is the name of the window object. This name is set in
// InterfaceBuilder when the nib is created.
err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window);
require_noerr( err, CantCreateWindow );
// We don't need the nib reference anymore.
DisposeNibReference(nibRef);
// The window was created hidden so show it.
ShowWindow( window ) ;
//rajout3
InstallWindowEventHandler (
window ,
NewEventHandlerUPP(MainWindowCommandHandler) ,
1 ,
& CommSpec ,
(void*)window ,
NULL ) ;
//fin rajout3
// Call the event loop
RunApplicationEventLoop();
CantCreateWindow:
CantSetMenuBar:
CantGetNibRef:
return err;
}
//rajout4
/*fonction*/
pascal OSStatus MainWindowCommandHandler (
EventHandlerCallRef handlerref ,
EventRef event ,
void *userData )
{
OSStatus err = eventNoHandlederr ;
HICommand command;
GetEventParameter (
event ,
kEventParamDirectObject ,
typeHICommand ,
NULL ,
sizeof ( HICommand ) ,
NULL ,
& command ) ;
switch ( command.commandID )
{
case kConvertCommand :
ConvertCommandHandler ( (WindowRef ) userData ) ;
err = noErr ;
break ;
}
return err ;
}
pascal void ConvertCommandHandler ( WindowRef window)
{
ControlHandle fahrenheitField , celsiusFiled ;
ControlID fahrenheitControlID = { kConvertSignature , kFahrenheitFiledID } ;
ControlID celsiusControlID = { kConvertSignature , kCelsiusFiledID } ;
CFString text ;
Size actualSize ;
double fahrenheitTemp , celsiusTemp ;
GetControlByID ( window , & fahrenheitControlID , & fahrenheitField ) ;
GetControlByID ( window , & celsiusControlID , & celsiusField ) ;
GetControlData ( fahrenheitField , 0 , kControlEditTextCFStringTag , sizeof ( CFStringRef ) , &Text ) ;
fahrenheitTemp = ( fahrenheitTemp - 32.0 ) * 5.0 / 9.0 ;
text = CFStringCreateWithFormat ( NULL , NULL , CFSTR ( "%g") , celsiusTemp ) ;
SetControlData (celsiusField , 0 , kControlEditTextCFStringTag , sizeof ( CFStringRef ) , & text ) ;
CFRelease (text) ;
DrawOneControl ( celsiusField ) ;
}
//rajout4
je suis a l'ecoute n'hesitez pas j'aurais pu mail directement manu ou steg mais je pense que mon sujet est interressant
A+
donc en suivant ce qui est a coder dans le source du fichier principal dans le projectbuilder je me dis que la compilation devrais se passer sans probleme or j'ai une bonne trentaine d'erreur ( pas genial le truc ) je trouve leur pdf bien gentil mais retaper le code c'est soulant car avec un pdf ya pas de copier coller enfin bref si quelqun peut me dire si il a fait leur exemple et me dire ce qui cloche dans mon code car l'interface a ete bien faites
voici e le code :
/*les rajouts sont ce qui n'est pas dans le source
quand on lance un nouveau projet*/
#include <Carbon/Carbon.h>
//rajout1
/*macro */
#define kConvertCommand 'conv'
#define kConvertSignature 'conv'
#define kFahrenheitFieldID 'conv'
#define kCelsiusFieldID 'conv'
/*prototype*/
pascal OSStatus MainWindowCommandHandler (
EventHandlerCallRef handlerref ,
EventRef event ,
void *userData );
pascal void ConvertCommandHandler ();
//fin rajout1
int main(int argc, char* argv[])
{
IBNibRef nibRef;
WindowRef window;
OSStatus err;
//rajout2
EventTypeSpeccommSpec = { kEventClassCommand , kEventProcessCommand } ;
//fin rajout2
// Create a Nib reference passing the name of the nib file (without the .nib extension)
// CreateNibReference only searches into the application bundle.
err = CreateNibReference(CFSTR("main"), &nibRef);
require_noerr( err, CantGetNibRef );
// Once the nib reference is created, set the menu bar. "MainMenu" is the name of the menu bar
// object. This name is set in InterfaceBuilder when the nib is created.
err = SetMenuBarFromNib(nibRef, CFSTR("MainMenu"));
require_noerr( err, CantSetMenuBar );
// Then create a window. "MainWindow" is the name of the window object. This name is set in
// InterfaceBuilder when the nib is created.
err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window);
require_noerr( err, CantCreateWindow );
// We don't need the nib reference anymore.
DisposeNibReference(nibRef);
// The window was created hidden so show it.
ShowWindow( window ) ;
//rajout3
InstallWindowEventHandler (
window ,
NewEventHandlerUPP(MainWindowCommandHandler) ,
1 ,
& CommSpec ,
(void*)window ,
NULL ) ;
//fin rajout3
// Call the event loop
RunApplicationEventLoop();
CantCreateWindow:
CantSetMenuBar:
CantGetNibRef:
return err;
}
//rajout4
/*fonction*/
pascal OSStatus MainWindowCommandHandler (
EventHandlerCallRef handlerref ,
EventRef event ,
void *userData )
{
OSStatus err = eventNoHandlederr ;
HICommand command;
GetEventParameter (
event ,
kEventParamDirectObject ,
typeHICommand ,
NULL ,
sizeof ( HICommand ) ,
NULL ,
& command ) ;
switch ( command.commandID )
{
case kConvertCommand :
ConvertCommandHandler ( (WindowRef ) userData ) ;
err = noErr ;
break ;
}
return err ;
}
pascal void ConvertCommandHandler ( WindowRef window)
{
ControlHandle fahrenheitField , celsiusFiled ;
ControlID fahrenheitControlID = { kConvertSignature , kFahrenheitFiledID } ;
ControlID celsiusControlID = { kConvertSignature , kCelsiusFiledID } ;
CFString text ;
Size actualSize ;
double fahrenheitTemp , celsiusTemp ;
GetControlByID ( window , & fahrenheitControlID , & fahrenheitField ) ;
GetControlByID ( window , & celsiusControlID , & celsiusField ) ;
GetControlData ( fahrenheitField , 0 , kControlEditTextCFStringTag , sizeof ( CFStringRef ) , &Text ) ;
fahrenheitTemp = ( fahrenheitTemp - 32.0 ) * 5.0 / 9.0 ;
text = CFStringCreateWithFormat ( NULL , NULL , CFSTR ( "%g") , celsiusTemp ) ;
SetControlData (celsiusField , 0 , kControlEditTextCFStringTag , sizeof ( CFStringRef ) , & text ) ;
CFRelease (text) ;
DrawOneControl ( celsiusField ) ;
}
//rajout4
je suis a l'ecoute n'hesitez pas j'aurais pu mail directement manu ou steg mais je pense que mon sujet est interressant
A+