Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851

Необработанное исключение и тд

02.01.2021, 16:00. Показов 1864. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не вижу в чем ошибка, необработанное исключение. Вылетает где то в WM_PAINT.
Плюс переменная indexfile, не индексируется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#define _CRT_SECURE_NO_WARNINGS
 
#define UNICODE
#define _UNICODE
 
#include <windows.h>
#include <tchar.h>
#include <vector>
#include <iostream>
//#include <conio.h>
//#include <stdlib.h>
 
    // left Задает координату x левого верхнего угла прямоугольника.
    // top  Задает y- координату левого верхнего угла прямоугольника.
    // right    Задает координату x правого нижнего угла прямоугольника.
    // bottom   Задает y- координату нижнего правого угла прямоугольника.
 
struct filestructInfo
{
    TCHAR fileName[MAX_PATH];
    int fileAttribute;
    unsigned long long fileSize;  
    FILETIME fileTimeCreate;
};
 
HANDLE hFind;
TCHAR katalogPath[MAX_PATH]; // путь к каталогу.
WIN32_FIND_DATAW wfd;
SYSTEMTIME st;
int sizeArrfile=0; // количество файлов каталоге.
int indexfile=0; // количество файлов во временном массиве структур.
 
std::vector<filestructInfo>filesVec;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void createArrayStructFileInfo();
void print(HWND hWndParent, HDC hDC, PAINTSTRUCT ps);
 
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    HWND hWnd;
    TCHAR szClassName[] = _T("MyClass");
    MSG msg;
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(wc);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc; //WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(NULL, IDI_WINLOGO);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = _T("MyClass");
    wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 
    if (!RegisterClassEx(&wc))
    {
        MessageBox(NULL, _T("Cannot register class"), _T("Error"), MB_OK);
        return 0;
    }
 
    hWnd = CreateWindowEx(0L , szClassName, _T(""), WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);
    if(!hWnd)
    {
        MessageBox(NULL, _T("Cannot create main window"), _T("Error"), MB_OK);
        return 0;
    }
 
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    //RECT rect;
 
    switch(msg) 
    {
        case WM_CREATE:
            void createArrayStructFileInfo();
            break;
 
        case WM_PAINT:
        {
        hDC = BeginPaint(hWnd, &ps);
 
        print(hWnd, hDC, ps);
 
        EndPaint(hWnd, &ps);
        break;
        }
            
        case WM_CLOSE:
            DestroyWindow(hWnd);
            break;
 
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        
        default:
            return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}
 
// Заполнить массив структур.
void createArrayStructFileInfo()
{
    indexfile = 0;
    filesVec.clear();
    hFind = FindFirstFileW(katalogPath, &wfd);
    setlocale(LC_ALL, "");
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {
        sizeArrfile++;
        }while (NULL != FindNextFileW(hFind, &wfd));
            FindClose(hFind);
    }
    filesVec.resize(sizeArrfile);
    hFind = FindFirstFileW(katalogPath, &wfd);
    setlocale(LC_ALL, "");
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {
        wcscpy(filesVec[indexfile].fileName, wfd.cFileName);
        filesVec[indexfile].fileAttribute=wfd.dwFileAttributes;
        ULONGLONG nFileLen = 0;
        {
        nFileLen = (wfd.nFileSizeHigh * (MAXDWORD+1)) + wfd.nFileSizeLow;
        filesVec[indexfile].fileSize=nFileLen;
        }
        filesVec[indexfile].fileTimeCreate=wfd.ftCreationTime;
        indexfile++;
        }while (NULL != FindNextFileW(hFind, &wfd));                
            FindClose(hFind);
    }
}
 
void print(HWND hWndParent, HDC hDC, PAINTSTRUCT ps)
{
   GetClientRect(hWndParent, &ps.rcPaint);
   int katalog = 0; int file = 0;
   int i = 0;
   while(i<=indexfile)
        {
    // имя файла.
                ps.rcPaint.left = 0;
                TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, filesVec[i].fileName, 50);
                ps.rcPaint.left = ps.rcPaint.left + 100;
                if(filesVec[i].fileAttribute & FILE_ATTRIBUTE_DIRECTORY)
                {
                TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, _TEXT("<DIR>"), 5);
                katalog++;
                }
                else
                {
                TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, _TEXT("     "), 5);
                }
                ps.rcPaint.left = ps.rcPaint.left + 50;
                {
                TCHAR szBuf[65] = {0};
                _ui64tow(filesVec[i].fileSize, szBuf, 10);
                TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 25);
                file++;
                ps.rcPaint.left = ps.rcPaint.left + 100;
                }
                {
                FileTimeToSystemTime(&filesVec[i].fileTimeCreate, &st);
                TCHAR szBuf[15] = {0};
                wsprintf(szBuf, _TEXT(" %02d.%02d.%d  %02d:%02d"), st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute);
                TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 15);
                }
                i++;
                ps.rcPaint.top = ps.rcPaint.top + 20;
                }
                {
                TCHAR szBuf[65] = {0};
                wsprintf(szBuf, _TEXT(" %10d"),/*_TEXT("      Файлов: %10d  Папок: %10d"), file, katalog*/indexfile);
                TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 50);
            }
}
Добавлено через 39 минут
Компилирует но, вылетает. Виснет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.01.2021, 16:00
Ответы с готовыми решениями:

Необработанное исключение
Добрый день, первый раз пишу. Вот такая ошибка вылезла, когда писал ЭГА Необработанное исключение по адресу 0x0124D42E в...

Необработанное исключение
Всем здрасьте. При компиляции кода , программа запускается нормально , но сразу же зависает! При закрытии программы пишет вот что : ...

Необработанное исключение по адресу на х86, на х64 работает норм
ParWin = new Wnd (WS_EX_ACCEPTFILES, &quot;FRM_TEXTEDIT&quot;, &quot;Flat Assembler&quot;, WS_OVERLAPPEDWINDOW, 365,120,480,520, NULL,NULL, hInstance,...

18
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,105
02.01.2021, 16:24
DenAlpetyan,
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
wsprintf(szBuf, _TEXT(" %02d.%02d.%d  %02d:%02d")
я насчитал 18 символов минимум + 1zt, а буфер всего CHAR szBuf[15]
бери с запасом
1
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 16:33  [ТС]
Алексей1153, Спасибо, толку то, ничего не меняется.
0
фрилансер
 Аватар для Алексей1153
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,105
02.01.2021, 16:36
DenAlpetyan, нужно брать отладчик в руки и вперёд:

1) как работает без вызова функции print?
2) бывает ли выход за границу filesVec?
3) на какой именно строке функции print вылазит ошибка?
и так далее
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 16:43
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
TCHAR szBuf[65] = {0};
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
TCHAR szBuf[15] = {0};
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
TCHAR szBuf[65] = {0};
Зачем ты каждый раз объявляешь новый буфер? Объяви один раз в начале TCHAR szBuf[128] и всё.

Добавлено через 1 минуту
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
Алексей1153, Спасибо, толку то, ничего не меняется.
Покажи, как сделал. Подозреваю теперь szBuf[18]?
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 16:51  [ТС]
oleg-m1973, Спасибо, сам не знаю зачем.

Добавлено через 7 минут
oleg-m1973, вот.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
void print(HWND hWndParent, HDC hDC, PAINTSTRUCT ps)
{
    GetClientRect(hWndParent, &ps.rcPaint);
    int katalog = 0; int file = 0;
    int i = 0;
    TCHAR szBuf[128] = {0};
    while(i<=indexfile)
    {
        // имя файла.
        ps.rcPaint.left = 0;
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, filesVec[i].fileName, 50);
        ps.rcPaint.left = ps.rcPaint.left + 100;
        if(filesVec[i].fileAttribute & FILE_ATTRIBUTE_DIRECTORY)
        {
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, _TEXT("<DIR>"), 5);
        katalog++;
        }
        else
        {
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, _TEXT("     "), 5);
        }
        ps.rcPaint.left = ps.rcPaint.left + 50;
        {
        _ui64tow(filesVec[i].fileSize, szBuf, 10);
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 25);
        file++;
        ps.rcPaint.left = ps.rcPaint.left + 100;
        }
        {
        FileTimeToSystemTime(&filesVec[i].fileTimeCreate, &st);
        wsprintf(szBuf, _TEXT(" %02d.%02d.%d  %02d:%02d"), st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute);
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 20);
        }
        i++;
        ps.rcPaint.top = ps.rcPaint.top + 20;
        }
        {
        wsprintf(szBuf, _TEXT(" %10d"),/*_TEXT("      Файлов: %10d  Папок: %10d"), file, katalog*/indexfile);
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 50);
    }
}
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 16:55  [ТС]
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 16:58
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, 20);
C++
1
TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, wcslen(szBuf));
В других TextOut то же самое

Добавлено через 2 минуты
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
while(i<=indexfile)
    {
        // имя файла.
        ps.rcPaint.left = 0;
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, filesVec[i].fileName, 50);
Что такое indexfile и filesVec

Добавлено через 1 минуту
C++
1
 while(i <= indexfile && i < filesVec.size())
1
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 17:04  [ТС]
oleg-m1973, сделал, ошибка где то в другом месте программы, может с вектором.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 17:07
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
oleg-m1973, сделал, ошибка где то в другом месте программы, может с вектором.
В createArrayStructFileInfo убери filesVec.resize(sizeArrfile) и используй метод push_back, вместо filesVec[indexfile]

Добавлено через 55 секунд
indexfile, кстати, вообще не нужен. У тебя размер уже хранится в векторе
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 17:08  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
while(i <= indexfile && i < filesVec.size())
может тогда, indexfile вообще убрать?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 17:08
И показывай, как делаешь
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 17:34  [ТС]
oleg-m1973, вот, здесь все.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#define _CRT_SECURE_NO_WARNINGS
 
#define UNICODE
#define _UNICODE
 
#include <windows.h>
#include <tchar.h>
#include <vector>
#include <iostream>
//#include <conio.h>
//#include <stdlib.h>
 
 
    // left Задает координату x левого верхнего угла прямоугольника.
    // top  Задает y- координату левого верхнего угла прямоугольника.
    // right    Задает координату x правого нижнего угла прямоугольника.
    // bottom   Задает y- координату нижнего правого угла прямоугольника.
 
struct filestructInfo
{
    TCHAR fileName[MAX_PATH];
    int fileAttribute;
    unsigned long long fileSize;  
    FILETIME fileTimeCreate;
};
 
HANDLE hFind;
TCHAR katalogPath[MAX_PATH]; // путь к каталогу.
WIN32_FIND_DATAW wfd;
SYSTEMTIME st;
int sizeArrfile=0; // количество файлов каталоге.
int indexfile=0; // количество файлов во временном массиве структур.
 
std::vector<filestructInfo>filesVec;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void createArrayStructFileInfo();
void print(HWND hWndParent, HDC hDC, PAINTSTRUCT ps);
 
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    HWND hWnd;
    TCHAR szClassName[] = _T("MyClass");
    MSG msg;
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(wc);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(NULL, IDI_WINLOGO);
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = _T("MyClass");
    wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 
    if (!RegisterClassEx(&wc))
    {
        MessageBox(NULL, _T("Cannot register class"), _T("Error"), MB_OK);
        return 0;
    }
 
    hWnd = CreateWindowEx(0L , szClassName, _T(""), WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);
    if(!hWnd)
    {
        MessageBox(NULL, _T("Cannot create main window"), _T("Error"), MB_OK);
        return 0;
    }
 
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    //RECT rect;
 
    switch(msg) 
    {
        case WM_CREATE:
            createArrayStructFileInfo();
            break;
 
        case WM_PAINT:
        {
        hDC = BeginPaint(hWnd, &ps);
        print(hWnd, hDC, ps);
 
        EndPaint(hWnd, &ps);
        break;
        }
            
        case WM_CLOSE:
            DestroyWindow(hWnd);
            break;
 
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        
        default:
            return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}
 
// Заполнить массив структур.
void createArrayStructFileInfo()
{
    //indexfile = 0;
    filesVec.clear();
    hFind = FindFirstFileW(katalogPath, &wfd);
    setlocale(LC_ALL, "");
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {
        sizeArrfile++;
        }while (NULL != FindNextFileW(hFind, &wfd));
            FindClose(hFind);
    }
    filesVec.resize(sizeArrfile);
    hFind = FindFirstFileW(katalogPath, &wfd);
    setlocale(LC_ALL, "");
    if (INVALID_HANDLE_VALUE != hFind)
    {
        do
        {
        wcscpy(filesVec[indexfile].fileName, wfd.cFileName);
        filesVec[indexfile].fileAttribute=wfd.dwFileAttributes;
        ULONGLONG nFileLen = 0;
        {
        nFileLen = (wfd.nFileSizeHigh * (MAXDWORD+1)) + wfd.nFileSizeLow;
        filesVec[indexfile].fileSize=nFileLen;
        }
        filesVec[indexfile].fileTimeCreate=wfd.ftCreationTime;
        indexfile++;
        }while (NULL != FindNextFileW(hFind, &wfd));                
            FindClose(hFind);
    }
}
 
void print(HWND hWndParent, HDC hDC, PAINTSTRUCT ps)
{
    GetClientRect(hWndParent, &ps.rcPaint);
    int katalog = 0; int file = 0;
    int i = 0;
    TCHAR szBuf[128] = {0};
    while(i < filesVec.size())
    {
        // имя файла.
        ps.rcPaint.left = 0;
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, filesVec[i].fileName, wcslen(szBuf));
        ps.rcPaint.left = ps.rcPaint.left + 100;
        if(filesVec[i].fileAttribute & FILE_ATTRIBUTE_DIRECTORY)
        {
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, _TEXT("<DIR>"), 5);
        katalog++;
        }
        else
        {
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, _TEXT("     "), 5);
        }
        ps.rcPaint.left = ps.rcPaint.left + 50;
        {
        _ui64tow(filesVec[i].fileSize, szBuf, 10);
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, wcslen(szBuf));
        file++;
        ps.rcPaint.left = ps.rcPaint.left + 100;
        }
        {
        FileTimeToSystemTime(&filesVec[i].fileTimeCreate, &st);
        wsprintf(szBuf, _TEXT(" %02d.%02d.%d  %02d:%02d"), st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute);
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, wcslen(szBuf));
        }
        i++;
        ps.rcPaint.top = ps.rcPaint.top + 20;
        }
        {
        wsprintf(szBuf, _TEXT(" %10d"), _TEXT("      Файлов: %10d  Папок: %10d"), file, katalog);
        TextOut(hDC, ps.rcPaint.left, ps.rcPaint.top, szBuf, wcslen(szBuf));
    }
}
Ошибок не выдает теперь, но результат работы программы.

Вообщем каталог файлов в окно не выводит.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 18:29
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
wsprintf(szBuf, _TEXT(" %10d"), _TEXT("      Файлов: %10d  Папок: %10d"), file, katalog);
Это что?
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 18:50  [ТС]
oleg-m1973, спасибо, не заметил.
То что в цикле, вообще не выводит.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 18:51
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
То что в цикле, вообще не выводит.
Значит filesVec пустой
0
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 19:11  [ТС]
oleg-m1973, да я уже понял.
Надо было добавить в начало.
C++
1
2
3
4
5
6
7
8
void createArrayStructFileInfo()
{
GetCurrentDirectoryW(sizeof(katalogPath),katalogPath);
 
    wcscat(katalogPath, _TEXT("\\*.*"));
    std::wcout << katalogPath << std::endl;
    std::wcout << std::endl;
. . .
Добавлено через 59 секунд
Только теперь изображение дрожит.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.01.2021, 19:13
Цитата Сообщение от DenAlpetyan Посмотреть сообщение
Только теперь изображение дрожит.
Для начала - не надо никуда передавать и изменять PAINTSTRUCT ps, только в BeginPaint/EndPaint
1
15 / 15 / 3
Регистрация: 18.05.2019
Сообщений: 851
02.01.2021, 19:44  [ТС]
oleg-m1973, сделал так, дрожало из за hDC=GetDC(hWnd);, и ReleaseDC(hWnd, hDC);.
заменил на hDC = BeginPaint(hWnd, &ps);, и EndPaint(hWnd, &ps);.
В WM_PAINT соответственно.

изменил так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
oid print(HDC hDC, RECT rect)
{
    int katalog = 0; int file = 0;
    TCHAR szBuf[128] = {0};
 
    int i = 0;
    while(i < filesVec.size())
    {
        // имя файла.
        rect.left = 0;
        TextOut(hDC, rect.left, rect.top, filesVec[i].fileName, wcslen(szBuf));
        rect.left = rect.left + 200;
        if(filesVec[i].fileAttribute & FILE_ATTRIBUTE_DIRECTORY)
            {
            TextOut(hDC, rect.left, rect.top, _TEXT("<DIR>"), 5);
            katalog++;
            }
        else
            {
            TextOut(hDC, rect.left, rect.top, _TEXT("     "), 5);
            file++;
            }
            rect.left = rect.left + 60;
            {
            _ui64tow(filesVec[i].fileSize, szBuf, 10);
            TextOut(hDC, rect.left, rect.top, szBuf, wcslen(szBuf));
            rect.left = rect.left + 10;
            }
            {
            FileTimeToSystemTime(&filesVec[i].fileTimeCreate, &st);
            wsprintf(szBuf, _TEXT("%02d.%02d.%d  %02d:%02d"), st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute);
            TextOut(hDC, rect.left, rect.top, szBuf, wcslen(szBuf));
            }
        i++;
        rect.top = rect.top + 13;
    }
    rect.left = 0;
    wsprintf(szBuf, _TEXT("             Файлов: %10d  Папок: %10d"), file, katalog);
    TextOut(hDC, rect.left, rect.top, szBuf, wcslen(szBuf));
}
вроде все нормально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2021, 19:44
Помогаю со студенческими работами здесь

Необработанное исключение. Нарушение прав доступа при чтении
Здравствуйте! Пишу привязку программы к конкретному компьютеру, и получаю информацию о железе через WMI, но при сохранении данных...

Необработанное исключение: Нарушение прав доступа при чтении
Работала с игрой &quot;Крестики-нолики&quot;. При компиляции выдает сообщение &quot;Необработанное исключение в &quot;0x0086297b&quot; в...

Вызвано необработанное исключение: нарушение доступа для чтения. lpnmhdr было nullptr
Ошибка в фрагменте (см.скрин) после нажатия на кнопку &quot;ждать 5 сек&quot;. Строки 183-191 из общего кода: case WM_NOTIFY: LPNMHDR lpnmhdr =...

Возникло необработанное исключение по адресу 0x73A62CF2: исключение Microsoft C++: std::bad_array_new_length
Доброго времени суток, уважаемые форумчане :) Подскажите начинающему программисту. Ругается на необработанное исключение по адресу...

Что я сделал не так?Возникло необработанное исключение по адресу 0x7434A9F2 : исключение Microsoft C++: std
//Калькулятор Intrigger #include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; #include&lt;string&gt; #include&lt;cstring&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru