• 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

Object Storage Arubacloud
0 głosów
133 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 (194,920 p.)

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

Podobne pytania

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

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...