temtriss Опубликовано 18 мая, 2018 Поделиться Опубликовано 18 мая, 2018 (изменено) Ну собственно вот, сильно ногами не бейте, несколько раз оговорился при описании загрузки))(сегодня тяпница все таки)) Ну и собственно код: Спойлер #include <Windows.h> #include "resource.h" HWND hWnd; MSG uMsg; LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,LPSTR lpCommandLine , int nCmdShow) { WNDCLASSEX WndClass = { 0 }; WndClass.cbSize = sizeof(WNDCLASSEX); WndClass.hbrBackground = CreatePatternBrush(LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP2))); WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); WndClass.hInstance = hInst; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = "Main Window"; RegisterClassEx(&WndClass); hWnd = CreateWindowEx(0,WndClass.lpszClassName, "WndWithCustumBrush", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, (GetSystemMetrics(SM_CXSCREEN) - 640) / 2, (GetSystemMetrics(SM_CYSCREEN) - 480) / 2, 640, 480, NULL, NULL, NULL, NULL); ShowWindow(hWnd, SW_SHOWDEFAULT); while (GetMessage(&uMsg, hWnd, NULL, NULL)) { TranslateMessage(&uMsg); DispatchMessage(&uMsg); } return uMsg.wParam; } LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // Обработчик оконных сообщений switch (uMsg) { case WM_CLOSE: ExitProcess(0); break; default: return DefWindowProc(hWnd, uMsg, wParam, lParam); } } P.S. еще раз извеняюсь за оговорки и голос, чуток синий Изменено 18 мая, 2018 пользователем temtriss 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Andy Опубликовано 19 мая, 2018 Поделиться Опубликовано 19 мая, 2018 (изменено) Спасибо тебе,ты мне реально очень помог,последняя ошибка только осталась: error LNK2019: ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 1>C:\Users\Vasiliy\source\repos\ConsoleApplication2\Debug\ConsoleApplication2.exe : fatal error LNK1120: неразрешенных внешних элементов: 1 Видимо у меня Visual Studio,которая запрещает использовать ресурсы для программы( В 19.05.2018 в 01:26, temtriss сказал: Ну собственно вот, сильно ногами не бейте, несколько раз оговорился при описании загрузки А ты не мог бы мне скинуть свой установочник Visual Studio,а то у меня не поддерживает доступ к ресурсам Изменено 21 мая, 2018 пользователем Xipho Не нужно цитировать сообщение полностью. Это раз. Любой код (даже если это вывод ошибки компилятора) нужно оборачивать специальным тегом. В следуюищй раз будет предупреждение с баллами. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 21 мая, 2018 Поделиться Опубликовано 21 мая, 2018 В 19.05.2018 в 19:23, Andy сказал: Спасибо тебе,ты мне реально очень помог,последняя ошибка только осталась:error LNK2019: ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 1>C:\Users\Vasiliy\source\repos\ConsoleApplication2\Debug\ConsoleApplication2.exe : fatal error LNK1120: неразрешенных внешних элементов: 1 Видимо у меня Visual Studio,которая запрещает использовать ресурсы для программы( С чего такой вывод? У тебя студия ругается. на функцию _main, которую линкер не смог отрезолвить, а ты говоришь, про запрет доступа к ресурсам. Откуда это вообще предположение взялось? В 19.05.2018 в 19:23, Andy сказал: А ты не мог бы мне скинуть свой установочник Visual Studio,а то у меня не поддерживает доступ к ресурсам Еще раз, дело тут совершенно не в студии. Читай ошибки компилятора/линкера и исправляй их. Ну и, кстати, такой вопрос сразу - ты вообще в С++ и Visual Studio разбираешься? Или сразу нахрапом пытаешься что-то сделать? Не получится, так как ты уже на старте допускаешь ошибку. У тебя консольное приложение, у таких приложений окон не бывает, соответственно, картинку в такое окно ты вывести не сможешь. Да и в ресурсы там упаковать что-либо тоже проблематично. В общем, мое мнение - слишком рано ты взялся за эти попытки. 1. Изучи саму студию, а именно - как в ней создавать GUI приложения на С++ 2. Внимательно посмотри свой код и код, предоставленный выше и найди, как говорится, 10 отличий 3. Скопируй код, пройдись по нему, и пойми, что делает каждая строка кода. 4. Устрани все возможные ошибки компилятора/линкера. 5. Напиши свой вариант загрузки картинки. Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 21 мая, 2018 Поделиться Опубликовано 21 мая, 2018 @Andy @Xipho Ну все уже было сказано выше, могу только чуть-чуть добавить, В 19.05.2018 в 17:23, Andy сказал: "int __cdecl invoke_main(void)" На сколько я помню, могу конечно ошибатся, но WinMain должна вызыватся по __stdcall соглашению. А из ошибки видно, что оно вызывается по __cdecl, так же WinMain в отличии от main принимает в себя 4 параметра HINSTANCE, HINSTANCE(Вроде не используется и всегда NULL), LPSTR, int Глянуть подробннее можешь на MSDN, например тут: https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633559(v=vs.85).aspx Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 21 мая, 2018 Поделиться Опубликовано 21 мая, 2018 1 час назад, temtriss сказал: А из ошибки видно, что оно вызывается по __cdecl У него консольный проект поэтому используется stdcall и поэтому ошибка как сказали выше Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 22 мая, 2018 Поделиться Опубликовано 22 мая, 2018 8 часов назад, partoftheworlD сказал: У него консольный проект поэтому используется stdcall и поэтому ошибка как сказали выше Я специально не стал про это писать напрямую, чтобы Энди внимательно почитал код, и сам понял, в чем ошибка. А ты взял и спалил контору )))) Ссылка на комментарий Поделиться на другие сайты Поделиться
temtriss Опубликовано 22 мая, 2018 Поделиться Опубликовано 22 мая, 2018 20 часов назад, partoftheworlD сказал: У него консольный проект ну я как бы на это и намекал строкой 22 часа назад, temtriss сказал: WinMain в отличии от main Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения