Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Win32 (http://www.go4expert.com/forums/win32/)
-   -   Image Not Showing (http://www.go4expert.com/forums/image-not-showing-t349/)

hemanth.balaji 9Jun2005 11:43

Image Not Showing
 
I have to build a project. For that I am using an

OWNER Drwan Menu. Now i want the small part of the

remaining space to have an image. i.e a small logo

in the top right corner of the application on the

menu bar unused space. Now to dry that I just typed

a code to display an image somewahere in the main

window. But the output is not showing the Bitmap.

Why is that.

What is the probelm with the below code

Code: CPP

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

#define ID_FILE_EXIT 9001
#define ID_STUFF_GO 9002

const char g_szClassName[] = "myWindowClass";
HINSTANCE hInstance;

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message,

WPARAM wParam, LPARAM lParam)
{
    HDC hDC, MemDCExercising;
    PAINTSTRUCT Ps;
    HBITMAP bmpExercising;
   
    switch(Message)
    {
        case WM_CREATE:
        {
            HMENU hMenu, hSubMenu;

            hMenu = CreateMenu();

            hSubMenu =

CreatePopupMenu();
            AppendMenu(hSubMenu,

MF_STRING, ID_FILE_EXIT, "E&xit");
            AppendMenu(hMenu, MF_STRING

| MF_POPUP, (UINT)hSubMenu, "&File");

            hSubMenu =

CreatePopupMenu();
            AppendMenu(hSubMenu,

MF_STRING, ID_STUFF_GO, "&Go");
            AppendMenu(hMenu, MF_STRING

| MF_POPUP, (UINT)hSubMenu, "&Stuff");

            SetMenu(hwnd, hMenu);

        }
        break;

        case WM_PAINT:
        {
                hDC =

BeginPaint(hwnd, &Ps);

                // Load the bitmap

from the resource
                bmpExercising =

LoadBitmap(hInstance,

MAKEINTRESOURCE(IDB_EXERCISING));
                // Create a memory

device compatible with the above DC variable
                MemDCExercising =

CreateCompatibleDC(hDC);
                     // Select

the new bitmap
               

SelectObject(MemDCExercising, bmpExercising);

                // Copy the bits

from the memory DC into the current dc
                BitBlt(hDC, 200,

200, 200, 200, MemDCExercising, 0, 0, SRCCOPY);

                // Restore the old

bitmap
               

DeleteDC(MemDCExercising);
               

DeleteObject(bmpExercising);
                EndPaint(hwnd,

&Ps);
        }
        break;

        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case ID_FILE_EXIT:
                   

PostMessage(hwnd, WM_CLOSE, 0, 0);
                break;
                case ID_STUFF_GO:
                    break;
            }
        break;   

        case WM_CLOSE:
            DestroyWindow(hwnd);
        break;
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        default:
            return DefWindowProc(hwnd,

Message, wParam, lParam);
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE

hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize       =

sizeof(WNDCLASSEX);
    wc.style         = 0;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = NULL;
    wc.hCursor     = LoadCursor(NULL,

IDC_ARROW);
    wc.hbrBackground =

(HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm     = NULL;

    RegisterClassEx(&wc);

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,  

g_szClassName,  "A Menu ",  

WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 240,

120, NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation

Failed!"
, "Error!",
            MB_ICONEXCLAMATION |

MB_OK);
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}

I have also uploaded the project itself :

http://www.geocities.com/kalamirch/menu_two.zip

shabbir 9Jun2005 11:58

Re: Image Not Showing
 
If you can format the code a bit more using BB code it will be easier for us to go through the codes

Below are MFC code but I have commented so that you as Win32 programmer can also understand
Code:

        //Create a device context to load the bitmap into
        CDC dcMem;
        dcMem.CreateCompatibleDC(pdc);
 
        //Get the Display area available
        CRect lRect;
        GetClientRect(lRect);
        lRect.NormalizeRect();
 
        //select the bitmap into compatible device context
        CBitmap* pOldBitmap = (CBitmap*)dcMem.SelectObject
        (&m_bmpBitmap);
        //m_bmpBitmap.SetBitmapDimension(lRect.Width(),lRect.Height());
 
        //copy & resize the window to the dialog window
        pdc->StretchBlt(0,0,lRect.Width(),lRect.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

The above code will not run but just have the concept of displaying the bitmap.

If you want I can give you the code in which above code is running.

Thanks
Shabbir Bhimani


All times are GMT +5.5. The time now is 13:14.