Newsgroup: it.comp.programmare.win32
Titolo: Domandina sui cursori

Ciao a tutti volevo farvi una domanda.
Sto cercando di assegnare ad un mio programma un cursore definito da me, ci
sono riuscito ma quando vado sul menu cambia, torna il cursore predefinito .
Lo stesso accade quando apro una finestra di dialogo (c'č il cursore
predefinito).
Come faccio a renderlo visibile per tutte le finestre?
Dato che ci sono faccio un altra domanda .
Come avrete capito sono un neofila e mi piacerebbe sapere come fare per
aprire una finestra figlia.
Da quello che so bisogna registrare la classe ( ma in WinMain?)
Chiamare la sotto procedura InitApplication  (ma dove?)
Registrare la classe figlia (cioč? quella che segue?)
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
 etc etc etc
poi?
Non avete un sorgente da passarmi da studiare?
Grazie per il tempo perso ve ne sono grato?
Ciao


#include <windows.h>
#include <commctrl.h>
#pragma hdrstop
#include <condefs.h>
USERC("Res.rc");
//---------------------------------------------------------------------------
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
//---------------------------------------------------------------------------
#pragma argsused
 HWND hSB ;
 int aWidths[4] = { 100,150,350,-1 } ;
 HINSTANCE HInstance ;
 HBITMAP hBmp ;
 DRAWITEMSTRUCT *pDis ;
 HDC hdcMem ;
 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
 static char szAppName[] = "MGWin32Base" ;
 MSG         msg ;
 WNDCLASSEX  wndclass ;
 HWND hwnd ;
 HInstance =  hInstance ;
 wndclass.cbSize        = sizeof (wndclass) ;
 wndclass.style         = CS_HREDRAW | CS_VREDRAW|CS_SAVEBITS ;
 wndclass.lpfnWndProc   = WndProc ;
 wndclass.cbClsExtra    = 0 ;
 wndclass.cbWndExtra    = 0 ;
 wndclass.hInstance     = hInstance ;
 wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
 wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
 wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
 wndclass.lpszMenuName  = "IDM_MAINMENU1" ;
 wndclass.lpszClassName = szAppName ;
 wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION) ;
 HINSTANCE hINST = LoadLibrary("c:\\windows\\system") ;
 InitCommonControls () ;
 RegisterClassEx (&wndclass) ;
 hwnd = CreateWindow (szAppName, "Base MgWin32 Application",
                          WS_OVERLAPPEDWINDOW ,//| WS_VSCROLL | WS_HSCROLL,
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
 ShowWindow (hwnd, SW_SHOWNORMAL) ;
 UpdateWindow (hwnd) ;
 while (GetMessage (&msg, NULL, 0, 0))
       {
       TranslateMessage (&msg) ;
       DispatchMessage (&msg) ;
       }
 FreeLibrary(hINST) ;
  return msg.wParam ;
 }
 LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
        int cx , cy , cyStatus , x, y ;
        RECT rWindow ;
 switch (iMsg)
        {
        case WM_CREATE :
//        hSB = CreateStatusWindow(WS_CHILD | WS_BORDER | WS_VISIBLE |
CCS_TOP|SBARS_SIZEGRIP,//|SBS_SIZEGRIP,
//                                 "Prova",hwnd,1) ;
        hSB = CreateWindowEx (
                 0L, // extended style
                 STATUSCLASSNAME, // create status bar
                 "Prova", // window title
//                 WS_CHILD | WS_BORDER |WS_VISIBLE | CCS_TOP|SBS_SIZEGRIP, //
window styles
                 WS_CHILD | WS_BORDER |WS_VISIBLE | SBARS_SIZEGRIP | CCS_TOP ,
// window styles
                 0, 0, 0, 0, // x, y, width, height
                 hwnd, // parent window
                 (HMENU)1, // ID
                 HInstance, // instance
                 NULL); // window data
        SendMessage (hSB, SB_SETPARTS, 4, (LPARAM)aWidths);
        SendMessage (hSB, SB_SETTEXT, 1 | SBT_POPOUT,(LPARAM)"This text pops
out.");
        SendMessage (hSB, SB_SETTEXT, 2 | SBT_NOBORDERS,(LPARAM)"This text has
no borders.");
//        SendMessage (hSB, SB_SETTEXT, 3 | 0,(LPARAM)"Gianfry");
        hBmp = LoadBitmap (HInstance,"provabmp");
        hdcMem = CreateCompatibleDC(NULL) ;
        SelectObject(hdcMem,(HGDIOBJ)hBmp) ;
        // Set the fourth part to be owner-drawn and pass the bitmap.
        SendMessage (hSB, SB_SETTEXT, 3 | SBT_OWNERDRAW,(LPARAM)hBmp);
        return 0 ;
        case WM_DRAWITEM :
        pDis = (DRAWITEMSTRUCT*)lParam ;
        BitBlt(pDis->hDC,353,3,20,20,hdcMem,0,0,SRCCOPY) ;
//        TextOut(pDis->hDC,353,3,"Prova77",7);
        return true ;
        case WM_SIZE :
        cx = LOWORD (lParam) ;
        cy = HIWORD (lParam) ;
        cyStatus ;
        GetWindowRect (hSB, &rWindow) ;
        cyStatus = rWindow.bottom - rWindow.top ;
        MoveWindow (hSB, 0, cy - cyStatus,cx, cyStatus, TRUE) ;
        return   0;
        case WM_DESTROY :
        DeleteObject((HGDIOBJ)hBmp) ;
        DeleteDC(hdcMem) ;
        PostQuitMessage (0) ;
        return 0 ;
       }
 return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}