Madejsan Temat założony przez niniejszego użytkownika |
[WinAPI] Zmiana ikony w programie » 2013-01-27 14:39:58 Witam. Piszę programik w CB i chciałem zmienić ikony na własne. Niestety nie wiem czemu nie chcą się wczytać. Robiłem wszystko według kursu i sporo szukałem w necie. Programem ResEdit utworzyłem plik ikona.rc i resource.h ikona.rc wyglada tak: #include <windows.h> #include <commctrl.h> #include <richedit.h> #include "resource.h"
IDI_CURSOR1 CURSOR "aero.cur" IDI_ICON1 ICON "ikona.ico" IDI_ICON2 ICON "ikonasm.ico" jedna ikona jest 16x16 druga 32x32. Oczywiscie wszysekie pliki są w katalogu z projektem. w resource.h mam: #ifndef IDC_STATIC #define IDC_STATIC (-1) #endif #define IDI_ICON1 100 #define IDI_ICON2 101 #define IDI_CURSOR1 102 w main.cpp dodałem: #include "resource.h" i zmieniłem: wincl.hIcon = LoadIcon( hThisInstance, MAKEINTRESOURCE( IDI_ICON1 ) ); wincl.hIconSm = LoadIcon( hThisInstance, MAKEINTRESOURCE( IDI_ICON2 ) ); wincl.hCursor = LoadCursor( hThisInstance, MAKEINTRESOURCE( IDI_CURSOR1 ) ); Klikajac na projekt dodałem do katalogu Headers plik resource.h jednak jest on "szary" wyglada tak jakby był nieaktywny. Z góry wielkie dzięki za podpowiedzi. |
|
DejaVu |
» 2013-01-27 16:53:27 |
|
Madejsan Temat założony przez niniejszego użytkownika |
» 2013-01-27 22:26:09 Szukałem już na dużej ilości stron i robiłem według podanych tam różnych sposobów jednak nadal ikona nie chce się załadować. Teoretycznie wszystko jest poprawnie ale praktycznie jak się okazuje nie. Nie rozumiem dlaczego plik resource.h w projekcie jest "podświetlony" na szaro. Jeżeli wejde na nim w Properties->Build i zaznacze Compile File i Link File zmienia się na czarny ale wtedy program sie wywala. |
|
Gabes |
» 2013-01-27 23:14:06 A czy dodałeś do projektu plik ikona.rc ? |
|
Madejsan Temat założony przez niniejszego użytkownika |
» 2013-01-28 17:31:40 Tak plik ikona.rc normalnie dodana do projektu w folderze Resousces. Mam tez dodane menu.rc i normalnie śmiga. Jest możliwe że to wina jakiejś biblioteki? Może coś nie jest podlinkowane? |
|
Madejsan Temat założony przez niniejszego użytkownika |
» 2013-01-28 18:54:36 Wydaje mi się że to chyba wina hThisInstance podkleje początek kodu: #include <windows.h> #define _WIN32_IE 0x0400 #include <iostream> #include <commdlg.h> #include <stdio.h> #include <math.h> #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <commctrl.h> #include <richedit.h> #include "resource.h" HINSTANCE hThisInstance; HBITMAP hbmObraz; HBRUSH hBrush; HWND hPrzycisk1; HWND hPrzycisk2; HWND hPrzycisk3; HWND hPrzycisk4; HWND hPrzycisk5; HWND hPrzycisk6; HWND hPrzycisk7; HWND hEdit; HWND hEdit2; HWND hEdit3; HMENU hMenu; HFONT hFont; HFONT hFont2; using namespace std; using namespace cv;
void CreateToolTipForRect( HWND hwndParent ) { INITCOMMONCONTROLSEX ic; ic.dwSize = sizeof( INITCOMMONCONTROLSEX ); ic.dwICC = ICC_TAB_CLASSES; InitCommonControlsEx( & ic ); HWND hwndTT = CreateWindowEx( WS_EX_TOPMOST, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwndParent, NULL, hThisInstance, NULL ); SetWindowPos( hwndTT, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE ); TOOLINFO ti = { 0 }; ti.cbSize = sizeof( TOOLINFO ); ti.uFlags = TTF_SUBCLASS; ti.hwnd = hwndParent; ti.hinst = hThisInstance; ti.lpszText = LPSTR_TEXTCALLBACK; GetClientRect( hwndParent, & ti.rect ); SendMessage( hwndTT, TTM_SETTITLEA, 1,( LPARAM ) "Informacje" ); SendMessage( hwndTT, TTM_ADDTOOL, 0,( LPARAM )( LPTOOLINFO ) & ti ); SendMessage( hwndTT, TTM_ACTIVATE, true, NULL ); }
LRESULT CALLBACK WindowProcedure( HWND, UINT, WPARAM, LPARAM );
char szClassName[] = "CodeBlocksWindowsApp"; int WINAPI WinMain( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow )
{ HWND hwnd; MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof( WNDCLASSEX ); wincl.hIcon = LoadIcon( hThisInstance, MAKEINTRESOURCE( IDI_ICON1 ) ); wincl.hIconSm = LoadIcon( hThisInstance, MAKEINTRESOURCE( IDI_ICON2 ) ); wincl.hCursor = LoadCursor( hThisInstance, MAKEINTRESOURCE( IDI_CURSOR1 ) ); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; hbmObraz =( HBITMAP ) LoadImage( NULL, "tlo.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION ); hBrush = CreatePatternBrush( hbmObraz ); wincl.hbrBackground = hBrush; if( !RegisterClassEx( & wincl ) ) return 0;
|
|
Madejsan Temat założony przez niniejszego użytkownika |
» 2013-02-02 15:48:33 Zacząłem bawić się z bibliotekami i teraz jak kompiluje program wywala błąd "preprocessing failed" :/ czym to może być spowodowane? |
|
Madejsan Temat założony przez niniejszego użytkownika |
» 2013-02-02 16:35:14 Ok. Naprawiłem :)
Odnośnie zmiany ikony to zauważyłem że jak usunę z projektu plik menu.rc, zrobię rebuild i skompiluje to wszystko ładnie się wczytuje. Chciałbym jednak zachować menu w górnym pasku. Ma ktoś jakiś pomysł czemu to się "gryzie"?
|
|
« 1 » 2 |