Sommario
Introduzione xxix
Parte I - Introduzione al sistema di sviluppo 1
Capitolo 1 - Uso dell'ambiente di sviluppo 3
Uso del compilatore 3
Uso degli strumenti a riga di comando 4
Le risorse 5
Eseguibili e DLL 5
Ambienti di sviluppo integrati 8
L'editor integrato 8
Il debugger 8
Editing delle risorse 9
Workspace di progetto 9
Uso dei template di progetto 10
I componenti 11
Strumenti vari 11
Profiling 13
Controllo di versione 13
Uso delle funzionalita' di Visual C++ 13
Creazione di progetti con gli AppWizard 13
Aggiunta di funzioni con il ClassWizard 20
Uso della Component Gallery 28
Uso del Debugger di Visual C++ 30
Riepilogo 32
Parte II - Windows e le API Win32 33
Capitolo 2 - Panoramica del sistema operativo 35
Finestre e messaggi 35
Applicazioni, thread e finestre 36
Classi delle finestre 37
Tipi di messaggi 38
Messaggi e multitasking 40
Code dei messaggi 40
Processi e thread 40
Thread e messaggi 41
Chiamate di sistema 42
Servizi del modulo Kernel 43
Servizi del modulo User 44
Servizi del modulo GDI 46
Altre API 47
Segnalazione degli errori 48
Uso delle funzioni standard di libreria del C/C++ 48
Differenze tra le varie piattaforme 49
Riepilogo 50
Capitolo 3 - Il ciclo di smistamento dei messaggi 51
L'autentico programma "Hello, World!" 51
Un semplice ciclo di smistamento
dei messaggi: messaggi inviati e spediti 53
Le window procedure 55
Confronto con generic.c 58
Cicli di smistamento multipli
e window procedure 59
Riepilogo 63
Capitolo 4 - Finestre, finestre di dialogo e controlli 65
L'organizzazione gerarchica delle finestre 66
Gestione delle finestre 68
La funzione RegisterClass e la struttura WNDCLASS 68
Creazione di una finestra con CreateWindow 70
Stili estesi e la funzione CreateWindowEx 71
Come disegnare in una finestra 72
Il messaggio WM_PAINT 72
Ridisegnare una finestra invalidandone il contenuto 72
Messaggi per la gestione delle finestre 73
Finestre e classi 75
La window procedure 75
Subclassing 77
Subclassing globale 79
Superclassing 81
Finestre di dialogo 82
Finestre di dialogo modali 83
Finestre di dialogo non modali 83
Finestre di messaggio 84
Modelli delle finestre di dialogo 85
La dialog box procedure 85
Finestre di dialogo comuni 85
La finestre di dialogo Open e Save As 86
La finestra di dialogo Color 87
La finestra di dialogo Font 88
Finestre di dialogo per la stampa
e l'impostazione della stampante 89
Finestre di dialogo per la ricerca e la sostituzione di testo 90
Esempi di finestre di dialogo comuni 91
Le finestre di dialogo comuni e OLE 93
Controlli 94
Riepilogo 98
Capitolo 5 - I file delle risorse 101
Composizione dei file delle risorse 102
Il preprocessore del file delle risorse 103
Istruzioni su linea singola 103
Istruzioni multilinea 104
Risorse definite dall'utente 110
Compilazione e utilizzo degli script delle risorse 111
Esecuzione del compilatore delle risorse 111
Esecuzione del linker 111
DLL di risorse 111
Riepilogo 112
Capitolo 6 - Disegnare con i contesti di dispositivo 113
La GDI, i driver di dispositivo, i dispositivi di output 114
I contesti di dispositivo 115
Tipi di contesti di dispositivo 115
Contesti di dispositivo in memoria e su metafile 116
I contesti di informazione 117
Le coordinate 117
Coordinate logiche e di dispositivo 117
Modalita' di proiezione limitate 119
Funzioni di trasformazione 120
Il disegno di oggetti 126
Penne 127
Pennelli 128
Font 129
Tavolozze 130
Oggetti bitmap 134
Il clipping 135
Le funzioni di disegno 138
Linee 138
Curve 140
Figure piene 141
Regioni 141
Bitmap 141
Percorsi 143
Output di testo 143
Note sul processo di stampa 143
Riepilogo 144
Capitolo 7 - Thread e processi 147
Il multitasking nell'ambiente Win32 148
Concetti di base del multitasking 148
Multitasking cooperativo 149
Multitasking preemptive in Windows NT 150
Windows 95/98: come far coesistere mondi diversi
con un buon multitasking 151
La programmazione con i processi e i thread 153
Multitasking cooperativo: cedere il controllo
nel ciclo di smistamento dei messaggi 153
Elaborazione dei messaggi
durante lo svolgimento di lunghe operazioni 154
Uso di un thread secondario 157
Oggetti thread 159
Creazione e gestione dei processi 160
Oggetti di sincronizzazione 160
Programmare con gli oggetti di sincronizzazione 162
Riepilogo 164
Capitolo 8 - Gestione della memoria 165
I processi e la memoria 165
Spazi di indirizzamento separati 166
Spazi di indirizzamento 166
Memoria virtuale 167
Programmi a 32 bit 169
Dimensione degli interi 170
Modificatori di tipo e macro 170
Calcolo degli indirizzi 171
Funzioni di libreria 171
Modelli di memoria 171
Le funzioni relative ai selettori 172
Gestione semplificata della memoria 172
Allocazione della memoria con malloc e new 172
Il problema dei puntatori erronei 173
Condivisione della memoria tra le applicazioni 174
Memoria virtuale e gestione avanzata della memoria 174
Gestione della memoria virtuale in Win32 175
Funzioni per la gestione della memoria virtuale 175
Funzioni relative all'heap 179
La gestione della memoria attraverso
le API di Windows e il runtime del C 179
Funzioni di supporto e funzioni obsolete 180
File mappati in memoria e memoria condivisa 180
Memoria condivisa e puntatori a base fissa 182
I thread e la gestione della memoria 183
Accesso bloccante a variabile 183
Memorizzazione locale ai thread 183
Accesso alla memoria fisica e alle porte di I/O 184
Riepilogo 184
Capitolo 9 - Gestione dei file 187
Panoramica del file system 187
File system supportati 188
CD-ROM 188
Volumi di rete 188
Compressione di file e di volumi 189
Gli oggetti file in Win32 189
Creazione e apertura di file 189
Semplice input e output 190
Operazioni di I/O asincrone 191
I/O a basso livello 196
Descrittori di file 197
Descrittori di file standard 197
Funzioni per I/O a basso livello 197
I/O su stream 198
I/O su stream in C 198
I/O su stream in C++ (le classi iostream) 198
Periferiche speciali 199
I/O su console 200
Porte di comunicazione 201
Riepilogo 202
Capitolo 10 - Gli Appunti di Windows 205
Formati usati dagli Appunti 205
Formati standard degli Appunti 206
Formati registrati 207
Formati privati 207
Utilizzo degli Appunti 208
Trasferimento dei dati negli Appunti 208
Trasferimento differito 209
Incollare i dati contenuti negli Appunti 209
I controlli e gli Appunti 209
Messaggi degli Appunti 210
Visualizzatori di Appunti 210
Una semplice implementazione 210
Riepilogo 215
Capitolo 11 - Il Registro di configurazione 217
Struttura del Registro di configurazione 217
Valori del Registro di configurazione 218
Capacita' del Registro di configurazione 219
Chiavi predefinite del Registro di configurazione 219
Modifica manuale del Registro di configurazione 220
Chiavi del Registro di configurazione di uso comune 221
Sottoalberi di HKEY_LOCAL_MACHINE 221
Sottoalberi di HKEY_CLASSES_ROOT 222
Sottoalberi di HKEY_USERS 223
Sottoalberi di HKEY_CURRENT_USER 223
Il Registro di configurazione e i file INI 224
Le applicazioni e il Registro di configurazione 224
Apertura di una chiave del Registro di configurazione 225
Lettura di un valore 225
Impostazione di un valore 226
Creazione di una nuova chiave 226
Altre funzioni per la gestione del Registro di configurazione 226
Un esempio pratico 226
Riepilogo 230
Capitolo 12 - Gestione delle eccezioni 233
Gestione delle eccezioni in C e C++ 233
Eccezioni C 233
Gestore di terminazione C 238
Gestione delle eccezioni C++ 240
Gestore di terminazione C++ 240
Classi di eccezioni C++ 241
Uso contemporaneo di eccezioni C e C++ 242
Il gestore che utilizza i puntini di sospensione 242
Trasformazione delle eccezioni C 245
Riepilogo 245
Parte III - Microsoft Foundation Classes 247
Capitolo 13 - Struttura di un'applicazione MFC 249
MFC e le applicazioni 249
Concetti base delle Foundation Class 250
Lo scheletro di una semplice applicazione MFC 252
Creazione del progetto YAH 252
Esame dell'oggetto Applicazione 253
La mappa dei messaggi 257
Il frame, il documento e la visualizzazione 258
La classe finestra frame 259
La classe documento 261
La classe visualizzazione 263
Risorse dell'applicazione di base 265
Aggiunta di codice all'applicazione 267
Aggiunta di una risorsa stringa 267
Modifica del documento 267
Modifica della visualizzazione 268
Riepilogo 269
Capitolo 14 - Documenti e viste 271
La classe CDocument 271
Dichiarazione di una classe documento nell'applicazione 271
Funzioni membro di CDocument 273
Documenti, eventi e override di funzioni 274
Dati del documento 276
CCmdTarget e CDocItem 278
La classe CView 280
Dichiarazione di una classe di visualizzazione 280
Funzioni membro di CView 282
Visualizzazioni e messaggi 283
Varianti di CView 284
Applicazioni basate su finestre di dialogo 285
Riepilogo 285
Capitolo 15 - Finestre di dialogo e fogli delle proprieta' 287
Costruzione di finestre di dialogo 288
Aggiunta di un modello di dialogo 288
Costruzione della classe dialogo 288
Aggiunta di variabili membro 290
Risultati generati da ClassWizard 292
Attivazione della finestra di dialogo 293
Finestre di dialogo non modali 294
Altre informazioni
su Dialog Data Exchange 297
Dialog Data Exchange 297
Dialog Data Validation 297
Utilizzo di tipi semplici 298
Utilizzo dei tipi di dati dei controlli 299
Implementazione di tipi di dati personalizzati 299
Gestione
delle finestre di dialogo e dei messaggi 300
Fogli delle proprieta' 300
Costruzione dei fogli delle proprieta' 301
Aggiunta di un oggetto foglio delle proprieta' 305
Funzioni membro di CPropertyPage 306
Fogli delle proprieta' non modali 306
Riepilogo 309
Capitolo 16 - Supporto MFC per le finestre di dialogo comuni e i
controlli comuni 311
Finestre di dialogo comuni 312
CColorDialog 313
CFileDialog 313
CFindReplaceDialog 314
CFontDialog 316
CPageSetupDialog 317
CPrintDialog 318
COleDialog 319
Controlli comuni 320
Controllo animazione 320
Controllo data e ora 321
Controllo intestazione 322
Controllo tasto di scelta 322
Controllo indirizzo IP 323
Controllo elenco 323
Controllo calendario mensile 325
Barra di progresso 325
Controllo rich-text edit 326
Controllo cursore 327
Pulsanti di selezione 328
Finestra di stato 328
Controllo scheda 329
Barra degli strumenti 330
Controllo descrizione comandi 331
Controllo ad albero 332
Riepilogo 333
Capitolo 17 - Uso di controlli ActiveX 335
Aggiunta di controlli ActiveX a un'applicazione 336
Creazione di un contenitore del controllo 337
Aggiunta di un controllo ActiveX a un modello di dialogo 337
Impostazione delle proprieta' del controllo 338
Aggiunta di variabili membro 339
Gestione dei messaggi 343
Controlli ActiveX forniti con Visual C++ 344
Riepilogo 344
Capitolo 18 - Contesti di dispositivo e oggetti GDI 345
Contesti di dispositivo 346
La classe di base CDC 346
Creazione di un contesto di dispositivo 347
Contesto di dispositivo di disegno 348
Contesto di dispositivo dell'area client 348
Contesti di dispositivo relativi alle finestre 349
Contesto di dispositivo per metafile 349
Attributi di CDC 350
Proiezione delle coordinate e visualizzazioni 350
Semplici funzioni di disegno 353
Selezione di oggetti GDI 353
Linee e forme di base 354
Bitmap e scorrimento 355
Funzioni relative al testo e ai tipi di carattere 356
Operazioni di ritaglio 357
Stampa 357
Funzioni per i percorsi 358
Supporto di oggetti GDI in MFC 358
Penne 359
Pennelli 360
Bitmap 360
Tipi di carattere 361
Tavolozze 361
Regioni 361
Riepilogo 362
Capitolo 19 - Serializzazione: oggetti file e archivio 365
La classe CFile 365
Inizializzazione di CFile 367
Lettura e scrittura con un oggetto CFile 367
Gestione dei file 368
Gestione degli errori 368
Blocchi 368
Utilizzo di CFile in un'applicazione di esempio 369
La classe CStdioFile 369
La classe CInternetFile 370
La classe CMemFile 370
La classe COleStreamFile 371
La classe CSocketFile 371
CArchive 371
Creazione di un CArchive 372
Lettura e scrittura di oggetti 372
Gli operatori con overload >> e << 373
La funzione membro CObjectSerialize 373
Gestione degli errori 374
Utilizzo di CArchive in alcune semplici applicazioni 374
Serializzazione in applicazioni di framework MFC 376
Serializzazione nei documenti 376
Macro helper 376
Serializzazione, OLE e Appunti 377
Riepilogo 378
Capitolo 20 - Classi di insieme 379
Insiemi CObject 379
La classe CObList e il tipo POSITION 380
La classe CObArray 383
Altri insiemi lista 385
La classe CPtrList 385
La classe CStringList 385
Altri insiemi matrice 386
La classe CPtrArray 386
Classi di matrici intere 386
La classe CStringArray 387
Proiezioni 387
La classe CMapStringToString 387
La classe CMapStringToOb 390
La classe CMapStringToPtr 390
La classe CMapPtrToPtr 390
La classe CMapPtrToWord 391
La classe CMapWordToOb 391
La classe CMapWordToPtr 391
Insiemi di oggetti basati su modelli 391
Funzioni helper delle classi di insieme 392
Il modello CList 393
Il modello CArray 395
Il modello CMap 396
Il modello CTypedPtrList 397
Il modello CTypedPtrArray 397
Il modello CTypedPtrMap 398
Riepilogo 398
Capitolo 21 - Classi di supporto per Internet 401
L'architettura della classe Internet di MFC 401
Sessioni Internet 402
Connessioni Internet 403
Connessioni FTP 403
Connessioni Gopher 404
Connessioni HTTP 404
File Internet 405
Altre classi di supporto 405
Utilizzo delle classi Internet di MFC in alcune applicazioni 406
Comunicazioni con un server FTP 406
Comunicazioni con un server Gopher 407
Comunicazioni con un server HTTP 408
Riepilogo 409
Capitolo 22 - Eccezioni, multithreading e altre classi MFC 411
Le eccezioni nelle applicazioni MFC 412
Gestione delle eccezioni con le macro 412
Le eccezioni C++ e la classe CException 413
La classe CMemoryException 413
La classe CFileException 414
La classe CArchiveException 415
La classe CNotSupportedException 416
La classe CResourceException 417
La classe CDaoException 417
La classe CDBException 418
La classe CInternetException 418
La classe COleException 418
La classe COleDispatchException 419
La classe CUserException 419
Generazione di un'eccezione MFC 419
MFC e il multithreading 420
La caratteristica thread-safe di MFC 420
Creazione di thread in MFC 421
Sincronizzazione dei thread 422
La classe CEvent 422
La classe CMutex 423
La classe CCriticalSection 423
La classe CSemaphore 423
Sincronizzazione con CSingleLock e CMultiLock 424
Altre classi MFC 424
Tipi di dati semplici 424
Strutture e classi di supporto 426
Riepilogo 427
Parte IV - OLE, COM e applicazioni MFC 429
Capitolo 23 - OLE, ActiveX e il Component Object Model 431
Principi di OLE e il Component Object Model 431
Interfacce e metodi 432
Metodi e allocazione della memoria 433
Ereditarieta' e riuso degli oggetti 434
Identificatori di interfaccia 434
Definizione dell'interfaccia attraverso IUnknown 434
Oggetti classe e registrazione 435
Comunicazione tra oggetti 435
Moniker 436
COM e i thread 436
COM e i documenti composti 437
Structured Storage 437
Trasferimento dei dati 438
Documenti composti 439
Applicazioni di COM e OLE 440
Documenti contenitore e server OLE 440
Automazione 440
Trascinamento della selezione OLE 440
Controlli ActiveX 441
Interfacce personalizzate 441
Un semplice esempio 441
Descrizione funzionale 442
L'applicazione server Hello 443
Registrazione ed esecuzione del server 450
Accesso al server con il C++ 451
Riepilogo 452
Capitolo 24 - Server OLE 455
Concetti dei server 455
Server completi e mini-server 455
Modifica in loco 456
Attivazione del server 456
Creare una applicazione server con MFC 456
Usare AppWizard per creare uno scheletro
dell'applicazione 456
L'applicazione scheletro del server OLE 457
L'elemento server 458
COleDocument e gli elementi documento 460
La finestra frame in loco 460
Modi di funzionamento e risorse 460
Esecuzione dello scheletro del server 462
Personalizzazione di uno scheletro di server 463
Modifica del documento 464
Aggiunta del codice per la visualizzazione 464
Aggiunta di una finestra di dialogo 466
Serializzazione 468
Registrazione della nuova applicazione 468
Riepilogo 469
Capitolo 25 - Contenitori OLE 471
Creazione di una applicazione contenitore con AppWizard 471
Creazione di una applicazione scheletro 471
L'applicazione scheletro del contenitore OLE 472
Esecuzione dello scheletro del contenitore 472
Il codice dello scheletro del contenitore 475
Menu del contenitore 482
Personalizzazione dell'applicazione 483
Posizione degli oggetti 484
Disegno di tutti gli oggetti 486
Selezione degli oggetti 487
Altre caratteristiche 489
Riepilogo 490
Capitolo 26 - Drag and drop OLE 493
Principi del drag and drop 493
Creazione di una applicazione contenitore 494
Creazione dell'applicazione 494
Aggiunta del supporto per la posizione 494
Aggiunta del supporto per la selezione 497
Aggiunta del supporto per il drag and drop 498
Implementazione di una sorgente di trascinamento 499
Implementazione di un bersaglio di rilascio 500
Riepilogo 508
Capitolo 27 - Automazione 511
Costruzione di un server di automazione 511
Costruzione dello scheletro dell'applicazione ASRV 512
Implementazione del calcolo 512
Aggiunta del supporto per l'automazione 516
La libreria dei tipi 521
Collaudo dell'applicazione 522
Metodi standard e proprieta' 523
L'oggetto applicazione 525
La collezione dei documenti 526
L'oggetto documento 526
La collezione degli oggetti 527
Riepilogo 528
Capitolo 28 - Costruzione di controlli ActiveX con MFC 529
Creazione dello scheletro del controllo con AppWizard 530
Creazione dello scheletro del controllo 530
Analisi del codice del controllo ActiveX 533
Personalizzazione del controllo 542
Modifica della bitmap del controllo 542
Aggiunta delle proprieta' 543
Rendere persistente una proprieta' 545
Aggiunta dei metodi 546
Aggiunta degli eventi 547
Disegno del controllo 548
Aggiunta di una interfaccia basata su pagine di proprieta' 550
Modifica della pagina di proprieta' 550
Collegamento della pagina di proprieta'
con le proprieta' del controllo 550
Pagine di proprieta' supplementari 552
Collaudo, distribuzione e uso di un controllo personalizzato 553
Collaudo di un controllo ActiveX 553
Distribuzione del controllo ActiveX 553
Uso dei controlli ActiveX nelle applicazioni 554
Controlli ActiveX sul Web 554
Riepilogo 554
Capitolo 29 - Uso della ActiveX Template Library 557
Perche' ATL? 557
Costruzione di un controllo ActiveX con ATL 558
Creazione di un progetto di scheletro ATL COM 559
Aggiunta di un controllo 561
Aggiunta delle proprieta' e dei metodi 563
Aggiunta del codice per la visualizzazione 565
Aggiunta di una pagina di proprieta' 566
Gestione degli eventi 570
Aggiunta di una bitmap 574
Collaudo del controllo 575
Riepilogo 577
Capitolo 30 - Documenti ActiveX 579
Introduzione 579
L'interfaccia per i documenti ActiveX 580
Server per documenti ActiveX 581
Contenitori di documenti ActiveX 581
Creazione di applicazioni documento ActiveX 581
Creazione di un contenitore per i documenti ActiveX 581
Creazione di un server per i documenti ActiveX 586
Convesione di un server OLE esistente
per supportare i documenti ActiveX 588
Riepilogo 589
Capitolo 31 - COM distribuito 591
COM e DCOM: una evoluzione 591
Configurazione della workstation client 592
Uso di DCOMCNFG.EXE 593
Pratica di codifica esplicita 595
Oltre DCOM: COM+ 596
Riepilogo 597
Parte V - Soluzioni Client/Server 599
Capitolo 32 - Programmazione di database mediante ODBC 601
ODBC in azione 602
L'applet di Setup di ODBC 602
Concetti riguardanti le API di ODBC 604
Un semplice esempio ODBC 605
Altre chiamate a ODBC 609
Lo standard SQL e ODBC 611
Comandi per la manipolazione dei dati 611
Viste 612
Comandi per la definizione dei dati 613
ODBC all'interno
di applicazioni MFC 614
Impostazione di una sorgente di dati 614
Creazione dello scheletro
dell'applicazione ODBC con AppWizard 617
Personalizzazione di un'applicazione ODBC 622
Classi ODBC di MFC 623
Riepilogo 625
Capitolo 33 - Data Access Objects 627
Panoramica su DAO 627
Creazione di un'applicazione DAO 629
Il database 629
Creazione dello scheletro dell'applicazione 631
Esplorazione dello scheletro dell'applicazione DAO 633
Personalizzazione dell'applicazione 636
Classi DAO 639
La classe CDaoRecordset 640
La classe CDaoDatabase 641
La classe CDaoWorkspace 642
La classe CDaoQueryDef 642
La classe CDaoTableDef 642
Ulteriori classi DAO 643
Riepilogo 643
Capitolo 34 - OLE DB e ADO 645
OLE DB 646
SDK di OLE DB 646
Concetti di base 646
Un esempio pratico 648
ActiveX Data Objects 652
Panoramica sugli oggetti ADO 653
Un esempio pratico 655
Riepilogo 657
Capitolo 35 - Scrivere un servizio Windows NT 659
Servizi in ambiente Windows NT 659
Service Control Manager 660
Avvio e arresto di servizi 660
I servizi e le API Win32 661
Creazione di un applicazione di servizio Windows NT 662
Utilizzo dell'applicazione di servizio
di esempio di Windows NT SDK 662
Architettura dell'applicazione del servizio di Chat 663
Il modulo di servizio Main 664
La classe Service 668
La classe CSlot 670
Compilazione ed esecuzione del servizio 671
Riepilogo 672
Capitolo 36 - MTS e il modello a tre strati 673
Dynamic HTML 674
Il modello client/server a tre strati 677
Gli strati 677
Implementazioni di esempio 678
Microsoft Transaction Server 679
Aspetti legati alla scalabilita' 679
Concetti relativi a MTS 680
Panoramica sulla programmazione MTS 681
Riepilogo 682
Parte VI Reti e comunicazioni 683
Capitolo 37 - Scrivere applicazioni di messaggistica con MAPI
685
L'architettura MAPI 686
Livelli di supporto MAPI 687
Fornitori di servizi 688
Profili MAPI 689
API di MAPI 689
Simple MAPI 690
Common Messaging Calls 693
Extended MAPI 695
Active Messaging 695
Supporto MAPI fornito da MFC 697
Supporto MAPI in CDocument 697
MAPI attraverso AppWizard 697
Riepilogo 698
Capitolo 38 - Programmare TCP/IP con WinSock 699
Reti TCP/IP e OSI 700
La suite di protocolli internet 700
Datagram IP 701
Intestazione IP 702
Indirizzi host IP e instradamento (routing) 702
Nomi host 703
Pacchetti TCP e UDP, numeri di porta e Socket 705
Servizi Internet 705
Le API WinSock 705
Inizializzazione di WinSock 706
Creazione e utilizzo delle socket 706
Servizio per i nomi host 707
Ordinamento dei byte 707
Comunicazione attraverso i socket 708
Il problema delle chiamate bloccanti e la funzione select 709
Funzioni asincrone per le socket 710
Un semplice esempio WinSock 711
Programmazione per le socket con Microsoft Foundation Classes 713
Esempio di utilizzo di CAsyncSocket 713
Operazioni sincrone e serializzazione 716
Informazioni supplementari 716
Riepilogo 718
Capitolo 39 - Uso dell'API WinInet 719
Protocolli Internet 720
File Transfer Protocol 720
Il protocollo Gopher 722
HyperText Transfer Protocol 724
La libreria WinInet 724
Lettura di file da server FTP 726
Lettura di file da server Gopher 727
Lettura di file da server HTTP 728
Altre caratteristiche e funzioni di WinInet 729
Riepilogo 730
Capitolo 40 - Applicazioni di telefonia con TAPI 731
Panoramica su TAPI 731
TAPI Assisted Telephony: la piu' semplice applicazione TAPI 732
Concetti relativi a TAPI 733
Dispositivi TAPI 733
Indirizzi TAPI 734
Architettura software TAPI 736
Operazioni sincrone e asincrone 736
Strutture a lunghezza variabile 738
Servizi TAPI 740
Il modello di programmazione TAPI 740
Modalita' dei media TAPI 742
Applicazioni multiple 742
Un esempio di comunicazione dati 743
Riepilogo 749
Capitolo 41 - Pipe con nome e chiamate a procedure remote 751
Comunicare attraverso le pipe 751
Creazione di una pipe 752
Connessione a pipe con nome 753
Trasferimento di dati attraverso le pipe 754
Un esempio funzionante 754
Microsoft Remote Procedure Calls 756
Fondamenti di RPC 756
Un semplice esempio 757
Specifica dell'interfaccia 757
Implementazione del server 760
Implementazione del client 762
Gestione delle eccezioni RPC 763
Caratteristiche avanzate di RPC 764
Riepilogo 765
Parte VII - Grafica e multimedia 767
Capitolo 42 - Applicazioni multimediali 769
Riproduzione video con una chiamata a funzione 769
Fondamenti della programmazione multimediale 772
Formato dei dati multimediali 772
Interfacce multimediali 773
Programmare con MCIWnd 774
La window class MCIWnd 774
Funzioni MCIWnd 775
Macro MCIWnd 776
Notifiche MCIWnd 779
Media Control Interface 780
Sintassi delle stringhe di comando MCI 782
Insieme dei comandi MCI 782
Funzioni e macro MCI 783
Notifiche MCI 784
Interfacce avanzate 784
Funzioni AVIFile e AVIStream 784
File personalizzati e gestori di stream 784
Funzioni DrawDib 785
Video Compression Manager 785
Cattura video 785
Registrazione e riproduzione di audio a forma d'onda 785
Audio Compressor Manager 785
Registrazione e riproduzione MIDI 786
Mixer audio 786
Servizi multimediali vari 786
Riepilogo 786
Capitolo 43 - La libreria grafica OpenGL 789
Introduzione a OpenGL 790
Concetti di base di OpenGL 790
Inizializzazione 790
Disegno con OpenGL 792
Librerie aggiuntive 793
Applicazioni OpenGL per Windows in C 794
Inizializzazione OpenGL 796
La procedura della finestra 797
Compilazione ed esecuzione dell'applicazione 797
OpenGL in applicazioni MFC 798
Inizializzazione OpenGL 799
Disegno del cubo 800
Esecuzione dell'applicazione 802
Riepilogo 802
Capitolo 44 - Grafica e suono ad alte prestazioni: DirectX 805
Le API di DirectX 806
DirectX e il Component Object Model 807
DirectDraw 807
Direct3D 810
DirectSound 810
DirectPlay 811
DirectInput 812
DirectShow 812
DirectAnimation 813
DirectSetup 813
Un esempio funzionante 814
Riepilogo 821
Parte VIII - Altri argomenti 823
Capitolo 45 - Implementazione di una guida in linea sensibile al
contesto 825
Sviluppo dei file della guida in linea 826
Argomenti della guida e il formato rich text 827
Il file di progetto della guida in linea 830
File di sommario della guida in linea 832
Compilazione della guida in linea 833
Macro e DLL 833
Chiamata della guida in linea dalle applicazioni 834
Microsoft Help Workshop 835
Modifica di un progetto della guida in linea 835
Modifica di un file sommario della guida 841
Collaudo ed esecuzione della guida in linea 842
Scheletri di file della guida
in linea generati da AppWizard 843
Guida in linea HTML 844
Il sistema della guida in linea HTML 844
Tabella dei contenuti e sommario 845
L'HTML Help API 845
HTML Help Workshop 846
Riepilogo 846
Capitolo 46 - Creazione di programmi d'installazione 849
Requisiti di un programma d'installazione 850
Tipi di supporto 850
Supporto con piu' elementi 851
Memorizzazione efficiente 851
Opzioni selezionabili dall'utente 851
Registrazione e/o autenticazione 851
Copia condizionale 851
Aggiornamento della configurazione 851
Componenti condivisi 852
Disinstallazione 852
InstallShield 5 852
Creazione di un progetto con Project Wizard 852
Aggiungere i file 858
Modifica delle risorse 861
Lo script d'installazione 863
Costruire l'insieme di distribuzione 864
Testing e debugging 867
Riepilogo 868
Capitolo 47 - Estensioni dell'interfaccia utente 871
Interfacciamento con la shell 871
Spazio dei nomi 871
Application Desktop Toolbar (Appbar) 872
Interazione con la Taskbar 872
Creazione di visualizzatori di file 872
Scrittura di DLL di estensione della shell 872
Altre estensioni 874
Esempi 874
Installazione di una icona nella barra delle applicazioni 874
Aggiunta di una pagina delle proprieta' alla shell 876
Riepilogo 888
Capitolo 48 - Creazione di applicazioni internazionali 889
Come prepararsi alla nazionalizzazione:
pratiche di programmazione 891
Dimensioni del testo 891
Dipendenza dalla grammatica 892
Come isolare informazioni specifiche della lingua 892
Input da parte dell'utente 893
Lingue non europee 894
Strumenti per la programmazione internazionale 894
Localita' 894
Insiemi di caratteri 897
Come scrivere un'applicazione con Unicode 898
Unicode nelle applicazioni console 899
Unicode nelle applicazioni Windows 900
Unicode e MFC 901
Risorse multilingua 901
Come tradurre l'interfaccia utente in una lingua straniera 902
Piu' versioni di un'applicazione 903
DLL satellite 904
Risorse multilingue 904
File di guida 910
Problematiche di installazione 911
Riepilogo 911
Indice analitico 913
|