#include <SFML/Graphics.hpp>
#include <Windows.h>
#include <iostream>
#include <cstring>
#include <string>
TCHAR file_path[MAX_PATH];
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DROPFILES:
{
HDROP hDrop = (HDROP)wParam;
DWORD count_file = DragQueryFile(hDrop, 0xFFFFFFFF, file_path, sizeof(file_path)); // количество файлов
for (int i = 0; i < count_file; i++)
{
DragQueryFile(hDrop, i, (LPSTR)file_path, sizeof(file_path)); // получаем путь в file_path
}
DragFinish(hDrop); // просто закрытие хендла
}
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
sf::RenderWindow window(sf::VideoMode(200, 200), "Drag and Drop Test");
window.setFramerateLimit(30);
DragAcceptFiles(window.getSystemHandle(), TRUE); // включение обработки drag and drop окна window
// SFML вывод текста
sf::Font font;
font.loadFromFile("arial.ttf");
sf::Text check_message;
check_message.setFont(font);
check_message.setCharacterSize(20);
check_message.setColor(sf::Color::White);
check_message.setString("none");
//
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
/*GetMessage(&msg, 0, 0, 0);
TranslateMessage(&msg); не робит
DispatchMessage(&msg);*/
check_message.setString(std::to_string(std::strlen(file_path))); // 0 если путь пустой, и больше если работает
window.clear();
window.draw(check_message);
window.display();
}
return 0;
}
I2luY2x1ZGUgPFNGTUwvR3JhcGhpY3MuaHBwPgojaW5jbHVkZSA8V2luZG93cy5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8c3RyaW5nPgoKVENIQVIgZmlsZV9wYXRoW01BWF9QQVRIXTsKCkxSRVNVTFQgQ0FMTEJBQ0sgV2luZG93UHJvY2VkdXJlKEhXTkQgaHduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQp7Cglzd2l0Y2ggKG1lc3NhZ2UpCgl7CgkJY2FzZSBXTV9EUk9QRklMRVM6CgkJCXsKCQkJCUhEUk9QIGhEcm9wID0gKEhEUk9QKXdQYXJhbTsgCgkJCQlEV09SRCBjb3VudF9maWxlID0gRHJhZ1F1ZXJ5RmlsZShoRHJvcCwgMHhGRkZGRkZGRiwgZmlsZV9wYXRoLCBzaXplb2YoZmlsZV9wYXRoKSk7IC8vINC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsgoJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudF9maWxlOyBpKyspCgkJCQl7CgkJCQkJRHJhZ1F1ZXJ5RmlsZShoRHJvcCwgaSwgKExQU1RSKWZpbGVfcGF0aCwgc2l6ZW9mKGZpbGVfcGF0aCkpOyAvLyDQv9C+0LvRg9GH0LDQtdC8INC/0YPRgtGMINCyIGZpbGVfcGF0aAoJCQkJfQoJCQkJRHJhZ0ZpbmlzaChoRHJvcCk7IC8vINC/0YDQvtGB0YLQviDQt9Cw0LrRgNGL0YLQuNC1INGF0LXQvdC00LvQsAoJCQl9IAoJCQlicmVhazsKCQlkZWZhdWx0OgoJCQlyZXR1cm4gRGVmV2luZG93UHJvYyhod25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7Cgl9CglyZXR1cm4gMDsKfQoKaW50IFdJTkFQSSB3V2luTWFpbihISU5TVEFOQ0UgaEluc3RhbmNlLCBISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwgUFdTVFIgcENtZExpbmUsIGludCBuQ21kU2hvdykKewoJc2Y6OlJlbmRlcldpbmRvdyB3aW5kb3coc2Y6OlZpZGVvTW9kZSgyMDAsIDIwMCksICJEcmFnIGFuZCBEcm9wIFRlc3QiKTsKCXdpbmRvdy5zZXRGcmFtZXJhdGVMaW1pdCgzMCk7CgoJRHJhZ0FjY2VwdEZpbGVzKHdpbmRvdy5nZXRTeXN0ZW1IYW5kbGUoKSwgVFJVRSk7IC8vINCy0LrQu9GO0YfQtdC90LjQtSDQvtCx0YDQsNCx0L7RgtC60LggZHJhZyBhbmQgZHJvcCDQvtC60L3QsCB3aW5kb3cgCgoJLy8gU0ZNTCDQstGL0LLQvtC0INGC0LXQutGB0YLQsAoJc2Y6OkZvbnQgZm9udDsKCWZvbnQubG9hZEZyb21GaWxlKCJhcmlhbC50dGYiKTsKCglzZjo6VGV4dCBjaGVja19tZXNzYWdlOwoJY2hlY2tfbWVzc2FnZS5zZXRGb250KGZvbnQpOwoJY2hlY2tfbWVzc2FnZS5zZXRDaGFyYWN0ZXJTaXplKDIwKTsKCWNoZWNrX21lc3NhZ2Uuc2V0Q29sb3Ioc2Y6OkNvbG9yOjpXaGl0ZSk7CgljaGVja19tZXNzYWdlLnNldFN0cmluZygibm9uZSIpOwoJLy8KCgl3aGlsZSAod2luZG93LmlzT3BlbigpKQoJewoJCXNmOjpFdmVudCBldmVudDsKCQl3aGlsZSAod2luZG93LnBvbGxFdmVudChldmVudCkpCgkJewoJCQlpZiAoZXZlbnQudHlwZSA9PSBzZjo6RXZlbnQ6OkNsb3NlZCkKCQkJCXdpbmRvdy5jbG9zZSgpOwoJCX0KCQkKCQkvKkdldE1lc3NhZ2UoJm1zZywgMCwgMCwgMCk7CgkJVHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsgICAgICAgICAgINC90LUg0YDQvtCx0LjRggoJCURpc3BhdGNoTWVzc2FnZSgmbXNnKTsqLwoJCQoJCWNoZWNrX21lc3NhZ2Uuc2V0U3RyaW5nKHN0ZDo6dG9fc3RyaW5nKHN0ZDo6c3RybGVuKGZpbGVfcGF0aCkpKTsgLy8gMCDQtdGB0LvQuCDQv9GD0YLRjCDQv9GD0YHRgtC+0LksINC4INCx0L7Qu9GM0YjQtSDQtdGB0LvQuCDRgNCw0LHQvtGC0LDQtdGCIAoJCQoJCXdpbmRvdy5jbGVhcigpOwoJCXdpbmRvdy5kcmF3KGNoZWNrX21lc3NhZ2UpOwoJCXdpbmRvdy5kaXNwbGF5KCk7Cgl9CgoJcmV0dXJuIDA7Cn0=