Marshall Napisano Czerwiec 5, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 5, 2018 BCW jest to Borland Compiler for Windows.Jest to borlandowski kompilator wersji 3.1 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 6, 2018 Zgłoś Udostępnij Napisano Czerwiec 6, 2018 A to dobrze sie domyslalem ;] Wiec jak dodac? jesli dobrze zrozumialem to tak: TImage *bitmapa; bitmapa = new TImage(NULL); bitmapa->Picture->LoadFromFile("sciezka\\plik.bmp"); dziala to napewno pod Borland 5.0 i 6.0, a co do BCW nie pracowałem sprawdz nie zaszkodzi może zadziala ;] Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Marshall Napisano Czerwiec 6, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 6, 2018 Co za prymitywny kompilator nie ma nawet funkcji LoadFromFile, sprobuje w inny sposob. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Specter Napisano Czerwiec 7, 2018 Zgłoś Udostępnij Napisano Czerwiec 7, 2018 sprobuj: TImageList *bitmapa; bitmapa = new TImageList(NULL); bitmapa->Add(TBitmap *, TBitmap *); bitmapa->GetImageBitmap(); Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Marshall Napisano Czerwiec 8, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 8, 2018 Niestety TImageList - nie istnieje w tym kompilatorze. On ma niestety czesc swoich odmiennych funkcji. Co najgorsze to na helpie nie mozna zabardzo polegac. Jest podany przyklad ladowania bitmapy: HDC hdc, hdcMemory; HBITMAP hbmpMyBitmap, hbmpOld; BITMAP bm; hbmpMyBitmap = LoadBitmap(hinst, "MyBitmap"); GetObject(hbmpMyBitmap, sizeof(BITMAP), &bm); hdc = GetDC(hwnd); hdcMemory=CreateCompatibleDC(hdc); hbmpOld=SelectObject(hdcMemory, hbmpMyBitmap); BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMemory, 0, 0, SRCCOPY); SelectObject(hdcMemory,hbmpOld); DeleteDC(hdcMemory); ReleaseDC(hwnd, hdc); Niestety ten przyklad po podstawieniu parametrow okna i namiarow na bitmape rowniez nie dziala. Po skompilowaniu dokladnie jest taki sam efekt na ekranie jak przed skompilowaniem.Wpisany tekst dodaje do szkieletu budowy okna.Program rysuje figury,linie, punkty, zaznacza piksele,lecz obrazu nie chce dodac, niezaleznie czy pracuje na nowym,czy tez rozbudowanym oknie.Chyba ze o czyms zapomnialem.Moze jeszcze cos trzeba do tego dodac.[/img] OTO BEZEFEKTOWNE ZREALIZOWANIE ZALOZEN HELPA #include <windows.h> static char lpszAppName[] = "Rysowanie funkcji" ; HPEN pioro; HINSTANCE hinstance; int i; LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; RECT rc; HBRUSH hbr; HDC hdc, hdcMemory; HBITMAP hbmpMyBitmap, hbmpOld; BITMAP bm; switch (uMsg) { case WM_CREATE: break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); int k; for (k=0;k<=51;k++) for (i=0;i<=51;i++) { rc.left = 5+i*2; rc.top = k*2+5; rc.right = 7+i*2; rc.bottom = k*2+7; hbr = CreateSolidBrush(RGB(5*i,5*k,10)); FillRect(hdc, &rc, hbr); SelectObject(hdc,hbr); DeleteObject(hbr); } hbmpMyBitmap = LoadBitmap(hinstance, "h:\\Earth.bmp"); GetObject(hbmpMyBitmap, sizeof(BITMAP), &bm); hdc = GetDC(hWnd); hdcMemory=CreateCompatibleDC(hdc); hbmpOld=SelectObject(hdcMemory, hbmpMyBitmap); BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMemory, 0, 0, SRCCOPY); SelectObject(hdcMemory,hbmpOld); DeleteDC(hdcMemory); ReleaseDC(hWnd, hdc); EndPaint(hWnd, &ps); break; /*case WM_LBUTTONDOWN: X = LOWORD(lParam); Y = HIWORD(lParam); InvalidateRect(hWnd, 0, TRUE); UpdateWindow(hWnd); break; */ case WM_DESTROY: PostQuitMessage(0); break; case WM_KEYDOWN: break; default: return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } return(0L); } int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; WNDCLASS wndclass; HWND hWnd; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = MainWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = lpszAppName; if(RegisterClass(&wndclass) == 0) return FALSE; hWnd = CreateWindow(lpszAppName, lpszAppName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if(hWnd == NULL) return FALSE; ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Czerwiec 8, 2018 Zgłoś Udostępnij Napisano Czerwiec 8, 2018 Funkcja LoadBitmap() w drugim parametrze nie pobiera nazwy pliku, tylko nazwe zasobu z pliku .rc. Jezeli koniecznie chcesz wczytac bitmape z pliku uzyj funkcji: HANDLE LoadImage( HINSTANCE hinst, // uchwyt do klasy aplikacji (jezeli wczytujesz z pliku daj tu wartosc NULL) LPCTSTR lpszName, // nazwa lub identyfikator bitmapy (wpisz tutaj nazwe pliku jaki chcesz wczytac) UINT uType, // typ obrazka jaki chcesz wczytac (wpisz IMAGE_BITMAP) int cxDesired, // zadana szerokosc (podaj 0 to wczyta szerokosc z pliku) int cyDesired, // zadana wysokosc (tez daj 0) UINT fuLoad // flagi (tu wpisz LR_LOADFROMFILE) ); czyli zamien swoja linijke: hbmpMyBitmap = LoadBitmap(hinstance, "h:\\Earth.bmp"); na: hbmpMyBitmap = (HBITMAP) LoadImage(NULL,"h:\\Earth.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); Pelniejszy opis tej funkcji znajdziesz tu:https://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/loadimage.asp. I w ogole, jak czegos nie bedziesz mogl znalezc w swoim helpie to poszukaj na https://msdn.microsoft.com/library. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Marshall Napisano Czerwiec 12, 2018 Autor Zgłoś Udostępnij Napisano Czerwiec 12, 2018 Dziekuje bardzo serdecznie za pomoc. Pozdrawiam RAFAL Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.