Показать сообщение отдельно
Старый 02.04.2013, 11:03   #8
Evgeniy
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
Evgeniy На верном пути
По умолчанию

Цитата:
Сообщение от Sid Посмотреть сообщение
Я знаю в чем разница. Вы я смотрю язвить мостак. По существу ничем не ответили человеку, троли на другом форуме тоже, если уж на то пошло.
По существу я написал о винапи, а если конкретно - стандартных контролах виндовса. В интернете валом информации как это сделать на С++, С и Delphi и т.д. Это будет не просто - но скорость работы и размер скомпилированого приложения радует.
Посмотрите другие созданные темы пользователя Visible. Человек учится работать в билдере...и это печально. Единственно адекватный способ сделать процесс использования такого приложения проще - использовать винапи. Конкретно - не надо будет качать и таскать борландовские библиотеки( встроенные контролы).
Цитата:
Сообщение от Sid Посмотреть сообщение
прогресс загрузки это событийный процесс
Процесс загрузки - такой каким его напишет программист. Если в qt используется событийная модель и обертка вокруг процесса загрузки, то это не значит, что так везде.
зы линк на попытки человека сделать в билдере http://www.programmersforum.ru/showthread.php?t=187852
ззы мне удобнее использовать wget для закачки файлов - существует и для виндовса. Показывает прогрессбар. Если целью автора ставится изучение с++ как такового, то все же я бы советовал прочитать книги или пройти онлайн курсы в интернете.
Код не мой, собрал - работает (gcc -mwindows -s main.cpp -Wall -O3 -o main.exe 10кб)
ззы
Код:
#include <windows.h>
#include <commctrl.h>
 
#define PBS_MARQUEE     0x08
#define PBS_SMOOTH  1
#define PBS_SMOOTHREVERSE 0x10
#define COLOR_3DFACE 15
#define PBM_SETMARQUEE  (WM_USER + 10)
 
LRESULT CALLBACK Func(HWND, UINT, WPARAM, LPARAM);
INT registerWindow(PCSTR , WNDPROC ,                HBRUSH );
 
HINSTANCE hInstanceProgram;
HWND hWndProgressBar, hWndMain;
 
INT WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                LPSTR lpszArgument, INT nFunsterStil)
{
        MSG message;
 
    hInstanceProgram = hInstance;
        if (registerWindow("MyClass", Func,
                        GetSysColorBrush(COLOR_3DFACE)))
                return 0;
        hWndMain = CreateWindowEx(0, "MyClass",
                        "Progress Bar", WS_CAPTION | WS_SYSMENU
                        | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
                        NULL, NULL, hInstance, NULL);
        ShowWindow(hWndMain, nFunsterStil);
 
    while (GetMessage(&message, NULL, 0, 0))
        {
                TranslateMessage(&message);
                DispatchMessage(&message);
        }
 
        return message.wParam;
}
 
INT registerWindow(PCSTR lpszClassName, WNDPROC lpfnWndProc,
                HBRUSH hbrBackground)
{
        WNDCLASSEX wndClassEx;
 
        ZeroMemory(&wndClassEx, sizeof(WNDCLASS));
 
        wndClassEx.hInstance = hInstanceProgram;
        wndClassEx.lpszClassName = lpszClassName;
        wndClassEx.lpfnWndProc = lpfnWndProc;
        wndClassEx.style = CS_DBLCLKS;
        wndClassEx.cbSize = sizeof(WNDCLASSEX);
        wndClassEx.hIcon = NULL;
        wndClassEx.hIconSm = NULL;
        wndClassEx.hCursor = LoadCursor(NULL, IDC_ARROW);
        wndClassEx.lpszMenuName = NULL;
        wndClassEx.cbClsExtra = 0;
        wndClassEx.cbWndExtra = 0;
        wndClassEx.hbrBackground = hbrBackground;
 
        if (RegisterClassEx(&wndClassEx))
                return 0;
 
        return 1;
}
 
LRESULT CALLBACK Func(HWND hWnd, UINT message,
                WPARAM wParam, LPARAM lParam)
{
        switch (message)
        {
                case WM_CREATE:
            hWndProgressBar = CreateWindowEx(0, PROGRESS_CLASS, 
                          "", WS_CHILD | WS_VISIBLE | PBS_MARQUEE |PBS_SMOOTHREVERSE, 148, 8, 160, 16, hWnd, NULL,
                       hInstanceProgram, NULL);
                    SetTimer(hWnd, 1, 100, NULL);
            SendMessage(hWndProgressBar, PBM_SETMARQUEE, TRUE, 100);
                        break;
                case WM_DESTROY:
            KillTimer(hWnd, 1);
                        PostQuitMessage(0);
                        break;
                case WM_TIMER:
            SendMessage(hWndProgressBar, PBM_STEPIT, 0, 0);
            break;
                default:
                        return DefWindowProc(hWnd, message, wParam, lParam);
        }
 
    return 0;
}

Последний раз редактировалось Evgeniy; 02.04.2013 в 12:04.
Evgeniy вне форума   Ответить с цитированием