Witam. Chciałbym napisać program, który wyświetla zdjęcie na pulpicie bez okna. Znalazłem jeden kod, ale nie mogę go skompilować
W załączniku dodaję przykładowe zdjęcie. z góry dziękuję
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Najlepsza odpowiedź Booom , 06.10.2019 11:46
Użyłem SetWindowLong oraz ShowScrollBar Dzięki
Poniżej daję kod gdyby ktoś potrzebował
#include <windows.h> #include <tchar.h> HBITMAP hBitmap; HDC localDC; HBITMAP hOld; BITMAP qB; HDC hDC; // Handle (virtual memory pointer) to drawing characteristics LRESULT CALLBACK fnWndProc(HWND hwnd, unsigned int msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { //MessageBox(hwnd,_T("Window Procedure Received WM_CREATE Message!"),_T("Message Report!"),MB_OK); return 0; } case WM_LBUTTONDOWN: { //MessageBox(hwnd,_T("Window Procedure Received WM_LBUTTONDOWN Message!"),_T("Message Report!"),MB_OK); return 0; } case WM_PAINT: { //At program start up the whole window is invalid so must be drawn. //TCHAR tmpText[]=_T("TempText"); PAINTSTRUCT ps; hDC = BeginPaint(hwnd, &ps); BOOL qRetBlit = ::BitBlt(hDC, 0, 0, qB.bmWidth, qB.bmHeight, localDC, 0, 0, SRCCOPY); // Draw text on top of the image //int iBkMode=SetBkMode(hDC,TRANSPARENT); // Save Background Mode characteristic of drawing context //TextOut(hDC,40,20,tmpText,(int)_tcslen(tmpText)); // Draw Text //SetBkMode(hDC,iBkMode); // Return Drawing Context To Original State EndPaint(hwnd, &ps); return 0; } case WM_DESTROY: { ::SelectObject(localDC, hOld); ::DeleteDC(localDC); ::DeleteObject(hBitmap); PostQuitMessage(0); return 0; } } return (DefWindowProc(hwnd, msg, wParam, lParam)); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int iShow) { TCHAR szClassName[] = _T("Name"); WNDCLASSEX wc; MSG messages; HWND hWnd; wc.lpszClassName = szClassName; //Important Field! Character string identifying window class wc.lpfnWndProc = fnWndProc; //Important Field! Function Pointer. Address of Window Procedure wc.cbSize = sizeof(WNDCLASSEX); //Those top two fields I just listed are very important. The wc.style = 0; //others are of course necessary too, but fully understanding all wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); //the implications of the .szClassName and .lpfnWndProc fields will wc.hInstance = hInstance; //go a long way to helping you understand Win32 coding. The wc.hIconSm = 0; //.hBrushBackground field will be the color of the Window's wc.hCursor = LoadCursor(NULL, IDC_ARROW); //background. The .cbWndExtra field is very useful as it allows wc.hbrBackground = (HBRUSH)COLOR_BTNSHADOW; //you to associate object (Window) data to the instantiated Window's wc.cbWndExtra = 0; //internal structure, i.e., accomodate member data. wc.cbClsExtra = 0; wc.lpszMenuName = NULL; RegisterClassEx(&wc); hBitmap = (HBITMAP)::LoadImage(NULL, TEXT("c1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); GetObject(reinterpret_cast<HGDIOBJ>(hBitmap), sizeof(BITMAP), reinterpret_cast<LPVOID>(&qB)); localDC = ::CreateCompatibleDC(hDC); hOld = (HBITMAP)::SelectObject(localDC, hBitmap); hWnd = CreateWindowEx(0, szClassName, szClassName, WS_OVERLAPPEDWINDOW, 0, 0, qB.bmWidth, qB.bmHeight, HWND_DESKTOP, 0, hInstance, 0); LONG lStyle = GetWindowLong(hWnd, GWL_STYLE); lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU); SetWindowLong(hWnd, GWL_STYLE, lStyle); ShowScrollBar(hWnd, SB_VERT, FALSE); ShowWindow(hWnd, iShow); while (GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return (int)messages.wParam; }Przejdź do postu
Napisano 03.10.2019 10:05
#include <windows.h> #include <tchar.h> HBITMAP hBitmap; HDC localDC; HBITMAP hOld; BITMAP qB; HDC hDC; // Handle (virtual memory pointer) to drawing characteristics LRESULT CALLBACK fnWndProc(HWND hwnd, unsigned int msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { //MessageBox(hwnd,_T("Window Procedure Received WM_CREATE Message!"),_T("Message Report!"),MB_OK); return 0; } case WM_LBUTTONDOWN: { //MessageBox(hwnd,_T("Window Procedure Received WM_LBUTTONDOWN Message!"),_T("Message Report!"),MB_OK); return 0; } case WM_PAINT: { //At program start up the whole window is invalid so must be drawn. //TCHAR tmpText[]=_T("TempText"); PAINTSTRUCT ps; hDC = BeginPaint(hwnd, &ps); BOOL qRetBlit = ::BitBlt(hDC, 0, 0, qB.bmWidth, qB.bmHeight, localDC, 0, 0, SRCCOPY); // Draw text on top of the image //int iBkMode=SetBkMode(hDC,TRANSPARENT); // Save Background Mode characteristic of drawing context //TextOut(hDC,40,20,tmpText,(int)_tcslen(tmpText)); // Draw Text //SetBkMode(hDC,iBkMode); // Return Drawing Context To Original State EndPaint(hwnd, &ps); return 0; } case WM_DESTROY: { ::SelectObject(localDC, hOld); ::DeleteDC(localDC); ::DeleteObject(hBitmap); PostQuitMessage(0); return 0; } } return (DefWindowProc(hwnd, msg, wParam, lParam)); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int iShow) { TCHAR szClassName[] = _T("Name"); WNDCLASSEX wc; MSG messages; HWND hWnd; wc.lpszClassName = szClassName; //Important Field! Character string identifying window class wc.lpfnWndProc = fnWndProc; //Important Field! Function Pointer. Address of Window Procedure wc.cbSize = sizeof(WNDCLASSEX); //Those top two fields I just listed are very important. The wc.style = 0; //others are of course necessary too, but fully understanding all wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); //the implications of the .szClassName and .lpfnWndProc fields will wc.hInstance = hInstance; //go a long way to helping you understand Win32 coding. The wc.hIconSm = 0; //.hBrushBackground field will be the color of the Window's wc.hCursor = LoadCursor(NULL, IDC_ARROW); //background. The .cbWndExtra field is very useful as it allows wc.hbrBackground = (HBRUSH)COLOR_BTNSHADOW; //you to associate object (Window) data to the instantiated Window's wc.cbWndExtra = 0; //internal structure, i.e., accomodate member data. wc.cbClsExtra = 0; wc.lpszMenuName = NULL; RegisterClassEx(&wc); hBitmap = (HBITMAP)::LoadImage(NULL, (LPCTSTR)"c1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); GetObject(reinterpret_cast<HGDIOBJ>(hBitmap), sizeof(BITMAP), reinterpret_cast<LPVOID>(&qB)); localDC = ::CreateCompatibleDC(hDC); hOld = (HBITMAP)::SelectObject(localDC, hBitmap); hWnd = CreateWindowEx(0, szClassName, szClassName, WS_OVERLAPPEDWINDOW, 0, 0, qB.bmWidth, qB.bmHeight, HWND_DESKTOP, 0, hInstance, 0); ShowWindow(hWnd, iShow); while (GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return (int)messages.wParam; }
Znalazłem taki kod, lecz wyświetla tylko puste okno bez zdjęcia Jaka może być przyczyna ?
Napisano 03.10.2019 11:36
Napisano 03.10.2019 21:57
Tak oczywiście
Napisano 05.10.2019 12:54
Pomogła zmiana z
(LPCTSTR)"c1.bmp"
na
TEXT("c1.bmp")
Tylko że zdjęcie jest w oknie. Jak można się pozbyć okna, albo zrobić je niewidzialne ?
Napisano 06.10.2019 11:46 Najlepsza odpowiedź
Użyłem SetWindowLong oraz ShowScrollBar Dzięki
Poniżej daję kod gdyby ktoś potrzebował
#include <windows.h> #include <tchar.h> HBITMAP hBitmap; HDC localDC; HBITMAP hOld; BITMAP qB; HDC hDC; // Handle (virtual memory pointer) to drawing characteristics LRESULT CALLBACK fnWndProc(HWND hwnd, unsigned int msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { //MessageBox(hwnd,_T("Window Procedure Received WM_CREATE Message!"),_T("Message Report!"),MB_OK); return 0; } case WM_LBUTTONDOWN: { //MessageBox(hwnd,_T("Window Procedure Received WM_LBUTTONDOWN Message!"),_T("Message Report!"),MB_OK); return 0; } case WM_PAINT: { //At program start up the whole window is invalid so must be drawn. //TCHAR tmpText[]=_T("TempText"); PAINTSTRUCT ps; hDC = BeginPaint(hwnd, &ps); BOOL qRetBlit = ::BitBlt(hDC, 0, 0, qB.bmWidth, qB.bmHeight, localDC, 0, 0, SRCCOPY); // Draw text on top of the image //int iBkMode=SetBkMode(hDC,TRANSPARENT); // Save Background Mode characteristic of drawing context //TextOut(hDC,40,20,tmpText,(int)_tcslen(tmpText)); // Draw Text //SetBkMode(hDC,iBkMode); // Return Drawing Context To Original State EndPaint(hwnd, &ps); return 0; } case WM_DESTROY: { ::SelectObject(localDC, hOld); ::DeleteDC(localDC); ::DeleteObject(hBitmap); PostQuitMessage(0); return 0; } } return (DefWindowProc(hwnd, msg, wParam, lParam)); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int iShow) { TCHAR szClassName[] = _T("Name"); WNDCLASSEX wc; MSG messages; HWND hWnd; wc.lpszClassName = szClassName; //Important Field! Character string identifying window class wc.lpfnWndProc = fnWndProc; //Important Field! Function Pointer. Address of Window Procedure wc.cbSize = sizeof(WNDCLASSEX); //Those top two fields I just listed are very important. The wc.style = 0; //others are of course necessary too, but fully understanding all wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); //the implications of the .szClassName and .lpfnWndProc fields will wc.hInstance = hInstance; //go a long way to helping you understand Win32 coding. The wc.hIconSm = 0; //.hBrushBackground field will be the color of the Window's wc.hCursor = LoadCursor(NULL, IDC_ARROW); //background. The .cbWndExtra field is very useful as it allows wc.hbrBackground = (HBRUSH)COLOR_BTNSHADOW; //you to associate object (Window) data to the instantiated Window's wc.cbWndExtra = 0; //internal structure, i.e., accomodate member data. wc.cbClsExtra = 0; wc.lpszMenuName = NULL; RegisterClassEx(&wc); hBitmap = (HBITMAP)::LoadImage(NULL, TEXT("c1.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); GetObject(reinterpret_cast<HGDIOBJ>(hBitmap), sizeof(BITMAP), reinterpret_cast<LPVOID>(&qB)); localDC = ::CreateCompatibleDC(hDC); hOld = (HBITMAP)::SelectObject(localDC, hBitmap); hWnd = CreateWindowEx(0, szClassName, szClassName, WS_OVERLAPPEDWINDOW, 0, 0, qB.bmWidth, qB.bmHeight, HWND_DESKTOP, 0, hInstance, 0); LONG lStyle = GetWindowLong(hWnd, GWL_STYLE); lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU); SetWindowLong(hWnd, GWL_STYLE, lStyle); ShowScrollBar(hWnd, SB_VERT, FALSE); ShowWindow(hWnd, iShow); while (GetMessage(&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return (int)messages.wParam; }
C++
amxx client_putinserver w dllNapisany przez csMaster , 26.07.2020 c++ |
|
|
|||
|
C++
[ROZWIĄZANE] Wyciągnięcie danych z tablicy 2dNapisany przez Alelluja , 06.04.2020 c++ |
|
|
||
C++
FilterKeySetter[Arrow Keys]Napisany przez qrNt , 29.01.2019 c++, c# c++ c |
|
|
|||
C++
Dekompilacja pliku exeNapisany przez RaS_ , 05.02.2016 c++ |
|
|
|||
C++
Błąd w programie losującymNapisany przez Caine , 18.12.2015 c++ |
|
|
0 użytkowników, 1 gości, 0 anonimowych