Marshall Napisano Czerwiec 5, 2018 Autor Zgłoś Napisano Czerwiec 5, 2018 BCW jest to Borland Compiler for Windows.Jest to borlandowski kompilator wersji 3.1 Cytuj
Specter Napisano Czerwiec 6, 2018 Zgłoś 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
Marshall Napisano Czerwiec 6, 2018 Autor Zgłoś Napisano Czerwiec 6, 2018 Co za prymitywny kompilator nie ma nawet funkcji LoadFromFile, sprobuje w inny sposob. Cytuj
Specter Napisano Czerwiec 7, 2018 Zgłoś Napisano Czerwiec 7, 2018 sprobuj: TImageList *bitmapa; bitmapa = new TImageList(NULL); bitmapa->Add(TBitmap *, TBitmap *); bitmapa->GetImageBitmap(); Cytuj
Marshall Napisano Czerwiec 8, 2018 Autor Zgłoś 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
Aspect Napisano Czerwiec 8, 2018 Zgłoś 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
Marshall Napisano Czerwiec 12, 2018 Autor Zgłoś Napisano Czerwiec 12, 2018 Dziekuje bardzo serdecznie za pomoc. Pozdrawiam RAFAL Cytuj
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.