Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 56

Ошибка при открытии файлов

03.12.2015, 18:51. Показов 1055. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет кто поможет с вопросом. Help me

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
#include <windows.h>
#include <tchar.h>
#include <string>
 
#define CM_FILE_OPEN 1001
#define CM_FILE_SAVE 1002
#define CM_FILE_QUIT 1003
#define CM_EDIT_FIND 2001
#define CM_EDIT_REPLC 2002
 
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
HINSTANCE hInstance;
TCHAR szClass[] = TEXT("OpenSaveFile");
TCHAR szTitle[] = TEXT("Открытие и закрытие файла");
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) 
{ 
    MSG msg; 
    HWND hwnd; 
    hInstance = hInst; 
    if (!RegClass(WndProc, szClass, COLOR_WINDOW)) return FALSE; 
    hwnd = CreateWindow(szClass,szTitle , WS_OVERLAPPEDWINDOW | WS_VISIBLE, 
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, NULL); 
    if (!hwnd) return FALSE; 
    while(GetMessage(&msg, 0, 0, 0)) 
    { TranslateMessage(&msg); DispatchMessage(&msg); } 
    return msg.wParam;
 
}
 
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{ 
    WNDCLASS wc; 
    wc.style = wc.cbClsExtra = wc.cbWndExtra = 0; 
    wc.lpfnWndProc = Proc; 
    wc.hInstance = hInstance; 
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); 
    wc.hCursor = LoadCursor(NULL, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)(brBackground +1); 
    wc.lpszMenuName = NULL; 
    wc.lpszClassName = szName; 
    return (RegisterClass(&wc) != 0);
}
 
BOOL CreateMenuItem(HMENU hMenu, TCHAR *str, UINT uIns, UINT uCom, HMENU hSubMenu, BOOL flag, UINT fType)
{ 
    MENUITEMINFO mii; 
    mii.cbSize = sizeof(MENUITEMINFO);
    mii.fMask = MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU | MIIM_ID; 
    mii.fType = fType; 
    mii.fState = MFS_ENABLED; 
    mii.dwTypeData = str; 
    mii.cch = sizeof(str); 
    mii.wID=uCom; 
    mii.hSubMenu = hSubMenu; 
    return InsertMenuItem(hMenu, uIns, flag, &mii);
}
 
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 
    static HMENU hMainMenu, hFileMenu, hEditMenu; 
    static OPENFILENAME ofn;
    static char szFile[256];
    static char szFileTitle[256];
    static char CustomFilter[256];
 
    switch (msg) 
    { 
        case WM_CREATE:
        { 
         hMainMenu=CreateMenu();
         hFileMenu=CreatePopupMenu();
         int i=0;
         CreateMenuItem(hFileMenu,_T("&Открыть"),i++,CM_FILE_OPEN,NULL,FALSE,MFT_STRING);
         CreateMenuItem(hFileMenu,_T("&Сохранить"),i++,CM_FILE_SAVE,NULL,FALSE,MFT_STRING);
         CreateMenuItem(hFileMenu,NULL,i++,0,NULL,FALSE,MFT_SEPARATOR);
         CreateMenuItem(hFileMenu,_T("&Выход"),i++,CM_FILE_QUIT,NULL,FALSE,MFT_STRING);
         //Создаём временное меню для раздела правка
         hEditMenu=CreatePopupMenu();
         int i_a=0;
         CreateMenuItem(hEditMenu,_T("&Найти"),i_a++,CM_EDIT_FIND,NULL,FALSE,MFT_STRING);
         CreateMenuItem(hEditMenu,_T("&Заменить"),i_a++,CM_EDIT_REPLC,NULL,FALSE,MFT_STRING);
         int i_b=0;
         //Подключаем временные файлы к главному меню
         CreateMenuItem(hMainMenu,_T("&Файл"),i_b++,0,hFileMenu,FALSE,MFT_STRING);
         CreateMenuItem(hMainMenu,_T("Правка"),i_b++,0,hEditMenu,FALSE,MFT_STRING);
         SetMenu(hwnd,hMainMenu);    DrawMenuBar(hwnd);
         
                    ofn.lStructSize         = sizeof(OPENFILENAME);
                    ofn.hwndOwner           = hwnd;
                    ofn.nFilterIndex        = 1;
                    ofn.lpstrFile           = _T ("szFile");
                    ofn.nMaxFile            = sizeof(szFile);
                    ofn.lpstrFileTitle      = _T("szFileTitle");
                    ofn.lpstrCustomFilter   = _T("CustomFilter");
                    return 0;   
        
        }
        case WM_COMMAND: 
        { 
            switch (LOWORD(wParam)) 
            { 
                case CM_FILE_OPEN: 
                { 
                    ofn.Flags = OFN_EXPLORER|OFN_CREATEPROMPT|OFN_ALLOWMULTISELECT;
                    ofn.lpstrTitle = _T("Панель выбора ткрытия файлов");
                     char szFilter[256]= "FILE C++ I C\0*.cpp; *.c\0"
                    "Zagolovochnie FILE\0*.h;*.hpp\0"
                     "Vse files\0*.*\0" ;
                     ofn.lpstrFilter = _T("szFilter");
                     szFileTitle[0]='\0';
                     szFile[0]='\0';
                     char str[512];
                     if(GetOpenFileName(&ofn))
                     {
                        
                        strcpy (str, "список имён файлов:\t");
                        for (int i=0; i<255 ; i++)
                            {
                                if (szFile[i]=='\0' && szFile[i+1]=='\0') break;
                                if (szFile[i]=='\0') szFile[i]='\n'; 
                            }
                            }
                            
                            strcat(str,szFile);
                            strcat(str,"\n\n Имя файла без указания пути : \t ");
                            strcat(str,szFileTitle);
                            MessageBox(hwnd,_T("str"),_T("Результаты выбора открываемого файла"), MB_OK);
                            
                    }
                        return 0;
                     }
                    
                case CM_FILE_SAVE:
                {
                    
                    ofn.Flags=OFN_OVERWRITEPROMPT;
                    ofn.lpstrTitle=_T("Панель выбора для сохранения имя файла");
                    char szFilter[256]= "Все файлы\0*.*\0";
                    ofn.lpstrFilter=_T("szFilter");
                    szFile[0]='\0';
                    char str[512];
                    if (GetSaveFileName(&ofn))
                    {
                        
                        strcpy(str,"Полное имя файла:\t ");
                        strcat(str,szFile);
                        strcat(str,"\n\n Имя файла без указания пути: \t");
                        strcat(str,szFileTitle);
                        MessageBox(hwnd,_T("str"),_T("Результаты выбора для сохранения файла"),MB_OK); 
                    }
                    return 0; 
                    }
                case CM_FILE_QUIT:
                    {
                        DestroyWindow(hwnd); return 0;
                    }
        
                return 0;
            
        }
        case WM_DESTROY:
                    {
                        PostQuitMessage(0); 
                         return 0;
                    }
            
    }
                
        return DefWindowProc(hwnd, msg, wParam, lParam);
    
    }
Я вот компилирую и нажимаю открыт, сохранить что не нажму и оно выдаёт :

Необработанное исключение по адресу 0x7442371B (KernelBase.dll) в Chernovik.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00D2CD50.

Ошибка потому что нет чего открывать ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2015, 18:51
Ответы с готовыми решениями:

Ошибка при открытии ком порта
при попытке компиляции выдаёт ошибку: 4 G:\_1codegraf\COM_INIT.h:13 cannot convert 'char*' to 'LPCWSTR {aka const wchar_t*}' for argument...

Ошибка при открытии процесса по его Handle
Здравствуйте, столкнулся с проблемой открытия процесса, вот код: #include &lt;iostream&gt; #include &lt;windows.h&gt; #include...

Ошибка при повторном открытии закрытого Com-порта, как её сбросить?
HANDLE hCom; //... void Button1_Click(void) // Открыть порт { hCom=CreateFile(&quot;COM1&quot;, GENERIC_READ | GENERIC_WRITE, 0, NULL,...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
03.12.2015, 19:59
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
#include <windows.h>
#include <tchar.h>
#include <string>
 
#define CM_FILE_OPEN 1001
#define CM_FILE_SAVE 1002
#define CM_FILE_QUIT 1003
#define CM_EDIT_FIND 2001
#define CM_EDIT_REPLC 2002
 
BOOL RegClass(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
HINSTANCE hInstance;
TCHAR szClass[] = TEXT("OpenSaveFile");
TCHAR szTitle[] = TEXT("Открытие и закрытие файла");
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hwnd;
    hInstance = hInst;
    if (!RegClass(WndProc, szClass, COLOR_WINDOW)) return FALSE;
    hwnd = CreateWindow(szClass,szTitle , WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, NULL);
    if (!hwnd) return FALSE;
    while(GetMessage(&msg, 0, 0, 0))
    { TranslateMessage(&msg); DispatchMessage(&msg); }
    return msg.wParam;
 
}
 
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
    WNDCLASS wc;
    wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;
    wc.lpfnWndProc = Proc;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(brBackground +1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = szName;
    return (RegisterClass(&wc) != 0);
}
 
BOOL CreateMenuItem(HMENU hMenu, TCHAR *str, UINT uIns, UINT uCom, HMENU hSubMenu, BOOL flag, UINT fType)
{
    MENUITEMINFO mii;
    mii.cbSize = sizeof(MENUITEMINFO);
    mii.fMask = MIIM_STATE | MIIM_TYPE | MIIM_SUBMENU | MIIM_ID;
    mii.fType = fType;
    mii.fState = MFS_ENABLED;
    mii.dwTypeData = str;
    mii.cch = sizeof(str);
    mii.wID=uCom;
    mii.hSubMenu = hSubMenu;
    return InsertMenuItem(hMenu, uIns, flag, &mii);
}
 
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HMENU hMainMenu, hFileMenu, hEditMenu;
    static OPENFILENAME ofn = {0};
    static TCHAR szFile[256];
    static TCHAR szFileTitle[256];
    static TCHAR CustomFilter[256];
 
    switch (msg)
    {
        case WM_CREATE:
        {
         hMainMenu=CreateMenu();
         hFileMenu=CreatePopupMenu();
         int i=0;
         CreateMenuItem(hFileMenu,_T("&Открыть"),i++,CM_FILE_OPEN,NULL,FALSE,MFT_STRING);
         CreateMenuItem(hFileMenu,_T("&Сохранить"),i++,CM_FILE_SAVE,NULL,FALSE,MFT_STRING);
         CreateMenuItem(hFileMenu,NULL,i++,0,NULL,FALSE,MFT_SEPARATOR);
         CreateMenuItem(hFileMenu,_T("&Выход"),i++,CM_FILE_QUIT,NULL,FALSE,MFT_STRING);
         //Создаём временное меню для раздела правка
         hEditMenu=CreatePopupMenu();
         int i_a=0;
         CreateMenuItem(hEditMenu,_T("&Найти"),i_a++,CM_EDIT_FIND,NULL,FALSE,MFT_STRING);
         CreateMenuItem(hEditMenu,_T("&Заменить"),i_a++,CM_EDIT_REPLC,NULL,FALSE,MFT_STRING);
         int i_b=0;
         //Подключаем временные файлы к главному меню
         CreateMenuItem(hMainMenu,_T("&Файл"),i_b++,0,hFileMenu,FALSE,MFT_STRING);
         CreateMenuItem(hMainMenu,_T("Правка"),i_b++,0,hEditMenu,FALSE,MFT_STRING);
         SetMenu(hwnd,hMainMenu);    DrawMenuBar(hwnd);
 
                    ofn.lStructSize         = sizeof(OPENFILENAME);
                    ofn.hwndOwner           = hwnd;
                    ofn.nFilterIndex        = 1;
                    ofn.lpstrFile           = szFile;
                    ofn.nMaxFile            = sizeof(szFile);
                    ofn.lpstrFileTitle      = szFileTitle;
                    ofn.lpstrCustomFilter   = CustomFilter;
                    return 0;
 
        }
        case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
                case CM_FILE_OPEN:
                {
                    ofn.Flags = OFN_EXPLORER|OFN_CREATEPROMPT|OFN_ALLOWMULTISELECT;
                    ofn.lpstrTitle = _T("Панель выбора ткрытия файлов");
                     TCHAR szFilter[256]= _T("FILE C++ I C\0*.cpp; *.c\0"
                    "Zagolovochnie FILE\0*.h;*.hpp\0"
                     "Vse files\0*.*\0") ;
                     ofn.lpstrFilter = szFilter;
                     szFileTitle[0]='\0';
                     szFile[0]='\0';
                     TCHAR str[512];
                     if(GetOpenFileName(&ofn))
                     {
 
                        _tcscpy (str, _T("список имён файлов:\t"));
                        for (int i=0; i<255 ; i++)
                            {
                                if (szFile[i]=='\0' && szFile[i+1]=='\0') break;
                                if (szFile[i]=='\0') szFile[i]='\n';
                            }
                            }
 
                            _tcscat(str,szFile);
                            _tcscat(str,_T("\n\n Имя файла без указания пути : \t "));
                            _tcscat(str, szFileTitle);
                            MessageBox(hwnd,_T("str"),_T("Результаты выбора открываемого файла"), MB_OK);
 
                    }
                        return 0;
                     }
 
                case CM_FILE_SAVE:
                {
 
                    ofn.Flags=OFN_OVERWRITEPROMPT;
                    ofn.lpstrTitle=_T("Панель выбора для сохранения имя файла");
                    TCHAR szFilter[256]= _T("Все файлы\0*.*\0");
                    ofn.lpstrFilter=szFilter;
                    szFile[0]='\0';
                    TCHAR str[512];
                    if (GetSaveFileName(&ofn))
                    {
 
                        _tcscpy(str,_T("Полное имя файла:\t "));
                        _tcscat(str,szFile);
                        _tcscat(str,_T("\n\n Имя файла без указания пути: \t"));
                        _tcscat(str,szFileTitle);
                        MessageBox(hwnd,_T("str"),_T("Результаты выбора для сохранения файла"),MB_OK);
                    }
                    return 0;
                    }
                case CM_FILE_QUIT:
                    {
                        DestroyWindow(hwnd); return 0;
                    }
 
                return 0;
 
        }
        case WM_DESTROY:
                    {
                        PostQuitMessage(0);
                         return 0;
                    }
 
    }
 
        return DefWindowProc(hwnd, msg, wParam, lParam);
 
    }
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 56
04.12.2015, 11:31  [ТС]
все равно ошибку показывает

Ошибка 1 error C2308: объединение неподходящих строк . Показует на строку №111 "Vse files\0*.*\0");
Расширенные и нерасширенные знаки это что ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
04.12.2015, 12:32
Цитата Сообщение от Ganster 89 Посмотреть сообщение
все равно ошибку показывает
У меня не показывает, код компилируется и работает
1
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 56
04.12.2015, 12:37  [ТС]
блин представляеш (
А такой вопрос у вас какая Visual studio? 10ая ? немножко не по теме
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
04.12.2015, 12:51
У меня вообще не VS, я пользуюсь GCC (+ Code::Blocks)
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 56
04.12.2015, 12:56  [ТС]
Ладненько Спасибо, Буду разбираться, как получится, если получится отпишусь у 2012ая!
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
04.12.2015, 16:49
Цитата Сообщение от Ganster 89 Посмотреть сообщение
Ошибка 1 error C2308: объединение неподходящих строк
Возможная причина ошибки. У Ganster 89, используется Unicode, поэтому
C++
1
#define _T(x)      L ## x
И получается
C++
1
2
3
L"FILE C++ I C\0*.cpp; *.c\0"
         "Zagolovochnie FILE\0*.h;*.hpp\0"
         "Vse files\0*.*\0"
Добавлено через 2 минуты
При другом определении
C++
1
#define _T(x)      x
будет
C++
1
2
3
"FILE C++ I C\0*.cpp; *.c\0"
         "Zagolovochnie FILE\0*.h;*.hpp\0"
         "Vse files\0*.*\0"
и ошибка не возникнет.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
04.12.2015, 16:57
Цитата Сообщение от Ganster 89 Посмотреть сообщение
все равно ошибку показывает
Ganster 89, посмотрите, какие у Вас свойства проекта.
Миниатюры
Ошибка при открытии файлов  
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
04.12.2015, 17:01
Цитата Сообщение от Ganster 89 Посмотреть сообщение
Расширенные и нерасширенные знаки
"Расширенные" (широкие, wide characters) wchar_t, wchar_t[].
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 56
04.12.2015, 19:37  [ТС]
Зашёл я у себя у меня выбран пункт - использовать набор символов юникода то есть правильно да? Ошибка
Ох уж эти ребусы

Спасибо вижу хочеш помочь ну что то не то!

Добавлено через 28 минут
Люди блин у меня получилось, я довольный шо слон попробывал методом тыка вот так :

C++
1
2
3
TCHAR szFilter[256]= _T("FILE C++ I C\0*.cpp; *.c\0")
                    _T("Zagolovochnie FILE\0*.h;*.hpp\0")
                     _T("Vse files\0*.*\0") ;
Круто! Мелочь а приятно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2015, 19:37
Помогаю со студенческими работами здесь

Ошибка при открытии файлов
Что это может быть? http://floomby.ru/s1/DaBpAu http://floomby.ru/s1/RaBKvq

Ошибка при открытии файлов .exe
Добрый день. Помогите пожалуйста решить проблему - при попытке открытия файлов с расширением exe, окно не успев открыться - тут же...

Ошибка при создании и открытии файлов
Написал программу которая позволяет создавать и открывать файлы,скажите плиз в чем ошибка?

Ошибка при открытии списка сохраняемых файлов
Пытаюсь выполнить команду &quot;Сохранить данные&quot;. Вылазит ошибка

Ошибка при открытии файлов расширением .doc
При открытии файла выдает ошибку (картинка), и после все файла нету((, но если жмешь не открыть , а изменить, в контекстном меню, то он его...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru