• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z bitmapa w winapi na przycisku

0 głosów
252 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez PieroQQ Początkujący (420 p.)

Mam problem ze zrobieniem przycisku w winapi, wydaje mi się, że wszystko powinno być okej. Być może popełniam jakiś błąd, pięknie proszę o pomoc. **Bitmapa jest dołączona do projeku w Code::blocks. Program się normalnie kompiluje, ale przycisk wygląda jak normalny. 

.CPP

#include <windows.h>
#include <commctrl.h>
#include <ostream>
#include <stdio.h>
#include "resource.h"
#include <tchar.h>

#define BMP_EC              211


HWND g_hprzycisk1;
HWND Przycisk ;
HINSTANCE hInstance;
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;

LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{

    // WYPEŁNIANIE STRUKTURY
    WNDCLASSEX wc;

    wc.cbSize = sizeof( WNDCLASSEX );
    wc.style = 0;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    wc.lpszMenuName = NULL;
    wc.lpszClassName = NazwaKlasy;
    wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );

    // REJESTROWANIE KLASY OKNA
    if( !RegisterClassEx( & wc ) )
    {
        MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
        MB_ICONEXCLAMATION | MB_OK );
        return 1;
    }

    // TWORZENIE OKNA
    HWND hwnd;

    hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 960, 680, NULL, NULL, hInstance, NULL );

    if( hwnd == NULL )
    {
        MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION );
        return 1;
    }

    ShowWindow( hwnd, nCmdShow ); // Pokaż okienko...
    UpdateWindow( hwnd );

    // Pętla komunikatów
    while( GetMessage( & Komunikat, NULL, 0, 0 ) )
    {
        TranslateMessage( & Komunikat );
        DispatchMessage( & Komunikat );
    }
    return Komunikat.wParam;
}

// OBSŁUGA ZDARZEŃ
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
    switch( msg )
    {
    case WM_CLOSE:
        DestroyWindow( hwnd );
        break;

    case WM_COMMAND:

            {
                if(wParam==1)
                {

                }


            }
            break;

            case WM_CREATE:
            {

        g_hprzycisk1 = CreateWindowEx( 0, "BUTTON", "Przycisk", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_BITMAP ,0, 0, 160, 160,
            hwnd, (HMENU)Przycisk, hInstance, NULL );
        HBITMAP EC = LoadBitmap( hInstance, MAKEINTRESOURCE(211));
        SendMessage(g_hprzycisk1, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)EC);;
            }
            break;

    case WM_DESTROY:
        PostQuitMessage( 0 );
        break;

        default:
        return DefWindowProc( hwnd, msg, wParam, lParam );
    }

    return 0;
}


resource.h
#ifndef IDC_STATIC
#define IDC_STATIC (-1)
#endif

#define DLG_MAIN            100

#define BMP_EC              211

resource.rc

// Generated by ResEdit 1.5.10
// Copyright (C) 2006-2012
// http://www.resedit.net

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

BMP_EC BITMAP "\\img\\autor_icon.bmp"




//
// Dialog resources
//
LANGUAGE 0, SUBLANG_NEUTRAL
DLG_MAIN DIALOG 0, 0, 186, 95
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
}



//
// Manifest resources
//
LANGUAGE 0, SUBLANG_NEUTRAL
1                  RT_MANIFEST    ".\\manifest.xml"

 

1 odpowiedź

0 głosów
odpowiedź 18 kwietnia 2017 przez j23 Mędrzec (195,220 p.)

Zacznij od sprawdzenia, czy LoadBitmap ładuje w ogóle bitmapę z zasobów.

Podobne pytania

0 głosów
2 odpowiedzi 321 wizyt
0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 28 listopada 2016 w C i C++ przez JKluseczka Obywatel (1,430 p.)
0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 20 października 2016 w C i C++ przez bartolinciu Dyskutant (7,580 p.)

93,729 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,288 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...