Newsgroup: it.comp.programmare.win32
Titolo: E' veramente urgente, vi prego aiutatemi

Ma perchè? Perchè con il codice che riporto il test logico non va proprio?
Ho provato in tutte le maniere a risolvere il problema, ma non ci riesco
proprio.
Aiuto!!
In caso qualcosa sia veramente da riscrivere postatemi anche il codice,
grazie.
//_____________________________________________
#include <windows.h>
#include "PWL2.h"
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR
lpszArgument, int nFunsterStil)
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved
*/
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by
windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof(WNDCLASSEX);
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL; /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the
window class */
    wincl.cbWndExtra = 0;                      /* structure or the window
instance */
    /* Use light-gray as the background of the window */
    wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
    /* Register the window class, if fail quit the program */
    if(!RegisterClassEx(&wincl)) return 0;
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx(
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "USEIT",         /* Title Text */
           WS_OVERLAPPED | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU, /*
default window */
           350,       /* Windows decides the position */
           210,       /* where the window ends up on the screen */
           130,                 /* The programs width */
           130,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop
*/
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
    /* Make the window visible on the screen */
    ShowWindow(hwnd, nFunsterStil);
    /* Run the message loop. It will run until GetMessage( ) returns 0 */
    while(GetMessage(&messages, NULL, 0, 0))
    {
           /* Translate virtual-key messages into character messages */
           TranslateMessage(&messages);
           /* Send message to WindowProcedure */
           DispatchMessage(&messages);
    }
    /* The program return-value is 0 - The value that PostQuitMessage( )
gave */
    return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage( ) */
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
    HWND hButton, hBut;
    static HWND hwndEdit;
    PAINTSTRUCT ps;
    switch (message)                  /* handle the messages */
    {
           case WM_CREATE:
           CreaPulsante(hwnd, hButton, "Visualizza", 5, 5, 110, 30);
           int MS;
           MS = MessageBox (hwnd, "Programma realizzato da Enrico Talotti,
continuare?" , "Continuare?", 0 + MB_YESNO);
           if(MS==IDNO)
                PostQuitMessage(0);
           break;
           case WM_PAINT:
           HDC     hDC, hMemDC;
           HBITMAP hBitmap;
           BITMAP  bm;
           RECT    rect;
           int     x,y;
           // Carica la bitmap
           hBitmap = (HBITMAP) LoadImage( NULL, "C:\\Documenti\\Front.bmp",
                                IMAGE_BITMAP,
                                0, 0,
                                LR_CREATEDIBSECTION |
                                LR_DEFAULTCOLOR |
                                LR_DEFAULTSIZE |
                                LR_LOADFROMFILE );
           // Disegna il motivo della bitmap sullo sfondo della finestra
           GetObject( hBitmap, sizeof( BITMAP ), &bm );
           hDC = BeginPaint( hwnd, &ps );
           hMemDC = CreateCompatibleDC( hDC );
           SelectObject( hMemDC, hBitmap );
           GetClientRect( hwnd, &rect );
           for ( y=0; y < rect.bottom; y += bm.bmHeight )
               for ( x=0; x < rect.right; x += bm.bmWidth )
               {
               BitBlt( hDC, x, y, bm.bmWidth,
               bm.bmHeight,
               hMemDC,
               0, 0,
               SRCCOPY );
               }
           DeleteDC( hMemDC );
           ReleaseDC( hwnd, hDC );
           DeleteObject( hBitmap );
           EndPaint( hwnd, &ps );
           break;
           case WM_COMMAND:
                switch(HIWORD(wParam)){
                      case BN_CLICKED:
                           switch(LOWORD(wParam)){
                           case 100:
                           hwndEdit = CreateWindow(
                           "EDIT",     // predefined class
                           NULL,       // no window title
                           WS_CHILD | WS_VISIBLE,
                           5, 40, 110, 20, // set size in WM_SIZE message
                           hwnd,       // parent window
                           (HMENU) 300, // edit control ID
                           (HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
                           NULL);                // pointer not needed
                           CreaPulsanteO(hwnd, hBut, "OK", 5, 65, 110, 30);
                           break;
                           case 101:
                           LPTSTR lpBuffer;
                           GetWindowText(hwndEdit, lpBuffer, 6);
                           if(lstrcmp(lpBuffer, "ciao") == 0){
                           MessageBox(hwnd, "HI", "HI", MB_OK);
                           }else{
                           MessageBox(hwnd, "NO", "NO", MB_OK);
                           }
                           break;
                           }
                      break;
                }
           break;
           case WM_DESTROY:
           PostQuitMessage(0);        /* send a WM_QUIT to the message queue
*/
           break;
           default:                   /* for messages that we don't deal
with */
           return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}





                                 LR_LOADFROMFILE );
a ogni WM_PAINT rivai a leggere la BMP dal disco??
prova a abilitare dalle prop dello schermo mostra conetnuto finestra durante
trascinamento, e fai passare una finestra sopra la tua applicazione...  :-9
--
ciao
..::[xaero]::..

test logico??

Forse non mi sono spiegato bene, l' if...else... che è contenuto nel case
101 del messaggio BN_CLICKED.
Ecco qui io gli chiedo un controllo sul testo contenuto nel' Edit Control ma
il risultato è sempre negativo anche se corrispondente al testo richiesto.
P. es. una password "ciao". Mando un messaggio all'oggetto per copiarne il
contenuto in un buffer temporaneo. Poi controllo il Buffer con la stringa
"ciao". Se sono uguali ritorno una MessageBox di conferma, se no una di
negazione dell'accesso.
La partte che non funziona è proprio il test logico if...else... che non
vuole proprio saperne di mostrarmi la schermata giusta anche se il testo
contenuto è corrispondente. Tutto ciò non è logico.



 ha scritto nel messaggio
news:8vqman$3nd$1...@pluto.sm.dsi.unimi.it...


Hai avuto un ottima idea, non mi era proprio passato alla testa.

                           LPTSTR lpBuffer;
cambia quella riga con questa
                             case 101:
                             char lpBuffer[10];
il resto lascialo com'e'... ma guarda che non e' scritto molto bene...


 ha scritto nel messaggio
news:8vqpne$4tt$1...@pluto.sm.dsi.unimi.it...


                              char lpBuffer[10];
che c'è di diverso?
come è definito il tipo LPCTSTR? a me funziona sempre sia con LPCTSTR che
con char []


Hai avuto un ottima idea, non mi era proprio passato alla testa.
Dopo questa frase..... ca**o ma fare il programmatore non è come
pelare patate in caserma....
Luc.

 Dopo questa frase..... ca**o ma fare il programmatore non č come


Il problema oltre al tipo sbagliato che avevo utilizzato, č anche che dovevo
dichiarare static l'HWND hwndEdit.
Infatti solo cosě sono riuscito a risolvere i miei problemi.
Non capisco ancora il motivo, ma il mio compilatore dice che cosě va bene.
E noi lo seguiamo.

credevo che LPTSTR fosse una macro che prende un char *
mentre char x[20] e' un'altra cosa... insomma, sono quasi sicurissimo...
sbagliavo?


direi che č proprio cosě...
    Marco

ma non siamo assurdi,
dichiarare LPTSTR e' come dichiarare char *, punto e basta

 ha scritto nel messaggio
news:7eTU5.49$tS2....@news.infostrada.it...


E a me che avevano detto che in C gli array sono puntatori.....
Che differenza c'č fra char str[] e char* str????? Non sono tutti e due
puntatori???
Cos'č, vi spaventate a fare un malloc????
 ---  MiB ----

 sbagliavo?
no, č correttissimo
// es.:
char szTest1[] = "xaero";
LPCTSTR szTest2 = "xaero";
non vedo la differenza nel passare szTest1 o szTest2 a una funzione...


 funzione...
Uhm, non sono del tutto convinto che i compilatori siano abbastanza
intelligenti da forzare il posizionamento della stringa "xaero" (che e`
una costante) in un segmento di memoria R/W. Nel caso dell'array il
compilatore ti alloca lo spazio su stack e ti copia la stringa, quindi
poi andrai a modificare una sua copia e tutto andra` bene; il secondo
caso mi sembra una grossa forzatura, perche` andresti a modificare dati
che il compilatore considera costanti. Inoltre, ecco un esempio di un
altro caso che potrebbe dare problemi:
char *etichetta1 = "errore";
char *etichetta2 = "errore";
etichetta1[0] = 'o';
Praticamente tutti i compilatori ottimizzeranno questo codice facendo
puntare entrambe le variabili allo stesso dato; quindi quando tu lo
modificherai in etichetta1, lo modificherai automaticamente anche in
etichetta2.
P.S. Ho appena provato, e col Visual C++ il codice qui sopra genera
un'access-violation a runtime.
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/