Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ и WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
ЛеЖиК)
185 / 60 / 4
Регистрация: 29.04.2011
Сообщений: 642
#1

Запись в файл и чтение из него - C++ WinAPI

03.06.2011, 13:07. Просмотров 1966. Ответов 3
Метки нет (Все метки)

есть функция записи файла
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
void ZapisVFile()
{
    char fname[]="C://sp1.dat";//Имя создаваемого файла 
    short nBuf2[500];//Массив с тестовыми данными для записи в файл 
    int x;
    float   c4=0.01;
    int c1=200;
    int c2=150;
    int c3=250;
    int c5=350;
 
    
 
    for(int i=0;i<500;i++)
    { 
        x=i;//Преобразуем счетчик цикла в число с плавающей точкой 
        
        nBuf2[i]=(int) c1*(float)exp((float)-x/c2)+c3*(float)exp((float)-c4*(x-c5)*(x-c5)); //Вычисляем значения 
    } 
   //Создадим новый файл и запишем в него тестовый массив*/ 
    HANDLE hFile=CreateFile  (fname,GENERIC_WRITE, 0,0,  CREATE_ALWAYS, 0 ,NULL)  ; 
    DWORD nCnt;//Счетчик записанного 
    if(!WriteFile(hFile,nBuf2, 2*500,&nCnt,NULL))//Запись в файл 
        throw 3;
 
}
дальше есть функция чтения из файла
C++
1
2
3
4
5
6
7
HANDLE hFile=CreateFile(szFile,GENERIC_READ,0,0,OPEN_EXISTING,0,NULL);
             if(hFile!=INVALID_HANDLE_VALUE)
                 break;
             ReadFile(hFile,nBuf,2*500,&nCnt, NULL);
             CloseHandle(hFile);
             bDataOK=true;
             InvalidateRect(hwnd,0,TRUE);
и функция вывода по графика по данным из файла
C++
1
2
3
4
5
6
while ((i<500) && bDataOK)
    {
        int m;
        m=r.bottom-50-nBuf[i];
        SetPixel(hdc,i++,m,RGB(0,0,255));
    }
(структура r обявлена так RECT r
но рисование не происходит


если же в функцию ZapisVFile() в циклвставить код
C++
1
2
nBuf[i]=(int) c1*(float)exp((float)-x/c2)+c3*(float)exp((float)-c4*(x-c5)*(x-c5));
        bDataOK=1;
то все нормально рисует

кстати, если открывать файл с помощью блокнота, то можно только прочить
Код
ÈÆÅÄÂÁÀ¾½¼»¹¸·¶´³²±°¯*¬«ª©¨§¥¤£¢¡*Ÿž�œ›š™˜—–•”“’‘��Ž�Œ‹Š‰ˆ‡††…„ƒ‚�?~}|{zzyxwvvutssrqpoonmmlkjjihhgffedccbba``_^^]\\[[ZYYXXWVVUUTTSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCCBBAA@@???>>===<<;;;::99988777666555444332221110000///...---,,,,+++****)))((((''''&&&&%%%%$$$$####""""!!!!!    #(/8CP_pƒ˜*ÂÖèøăċčĊă÷çÕÁ«–�n\M?4+$

























																

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2011, 13:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Запись в файл и чтение из него (C++ WinAPI):

Wave файл, чтение данных из него
Всем привет. написала програмку но не работает. а нужно следующее открыть wave...

Чтение/запись в файл
Здравствуйте. Нужно сделать асинхронный ввод/вывод файла. В программе Текст...

Чтение,шифрование и запись в один файл
Пишу программу шифрующую (CryptoAPI) файл,буфер - 1 килобайт,требуется сделать...

Чтение с консоли и запись в файл средствами API
Нужно считать с консоли строку и записать ее в файл средствами WIN API (функции...

Чтение из одного файла и запись в другой файл winAPI c++
Всем привет уже битый час туплю. Короче нужно переписать всю информацию из...

Чтение и запись в один и тот же файл с CreateFile
Добрый день. необходимо, чтобы можно было открыть файл, произвести из него...

3
velvet1545
6 / 9 / 2
Регистрация: 21.05.2011
Сообщений: 81
03.06.2011, 13:54 #2
ЭТО НА С++? ТЕКСТ КОМПИЛИРИУЕТСЯ? ИЛИ НА ДЕЛЬФИ?
0
ЛеЖиК)
185 / 60 / 4
Регистрация: 29.04.2011
Сообщений: 642
03.06.2011, 15:39  [ТС] #3
с++ все нормально компелируется

щас приведу весь код, если какие то вопросы, только там очень много не относящегося к этой теме

весь код программы

head.h
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
#define MI_BLUE 100
#define MI_GREEN 101
#define MI_EXIT 102
#define MI_OPROGE 103
#define MI_FILE 104
#define MI_DISK 105
#define MI_OPEN 106
 
 
#define ID_1 300 // панель инструментов
#define ID_2 301
#define ID_3 302
#define ID_BTNS 400
 
#define ID_OK 500 //диалог 
#define ID_CLOSE 501
#define ID_CHECK 502
#define ID_TEXT 503
#define ID_EDIT 504
#define ID_LIST 505
#define ID_COMBO 506
#define ID_RADIO1 507
#define ID_RADIO2 508
#define ID_NEXT 550
#define ID_LIST_FILES 560
#define ID_COMBO_DISK   561
#define ID_DRIVE 562
#define ID_DISK 563
#define ID_VOLINFO 564
 
#include <windows.h>
#include <windowsx.h>
#include <math.h>
#include <commctrl.h>  // панель инструментов
#pragma comment(lib, "Comctl32.lib")
 
 
// прототипы
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//оконаая функция
void OnDestroy(HWND);
void OnPaint(HWND hwnd);
bool OnCreate(HWND,LPCREATESTRUCT);
void OnCommand(HWND,int,HWND,UINT);
void OnRBottonDown(HWND,BOOL,int x,int y,UINT);
char *VibErr(const int a);
 
 
//прототипы деалога
BOOL CALLBACK DlgProc  (HWND,  UINT,  WPARAM,  LPARAM) ;
BOOL DlgOnInitDialog(HWND,HWND,LPARAM)  ; 
void DlgOnCommand (HWND, int,  HWND, UINT)  ; 
 
int FillInfo(HWND hwnd,LPSTR szVol);
void ZapisVFile();
 
MSG Msg;
 
 
HPEN hRedPen;
HPEN hGreenPen;
HPEN hBluePen;
 
HBRUSH hRedBrush=CreateSolidBrush(RGB(255,120,100));
HBRUSH hGreenBrush=CreateSolidBrush(RGB(120,250,100));
HBRUSH hBlueBrush=CreateSolidBrush(RGB(120,120,255));
 
 
//шрифты
HFONT hFont1;

файл с ресурсами
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
#include "head.h"
 
Main MENU
{
    POPUP "&Фон"
    {
        MENUITEM "&Синий",MI_BLUE
        MENUITEM "&Зеленый",MI_GREEN
        MENUITEM SEPARATOR
        MENUITEM "&Выход",MI_EXIT
    }
 
    POPUP "&Файл"
    {
        MENUITEM "&О проге",MI_OPROGE
        MENUITEM "&Список файлов",MI_FILE
        MENUITEM "&О дисках",MI_DISK
        MENUITEM SEPARATOR
        MENUITEM "&Выход",MI_EXIT
    }
    POPUP "&Настоящий файл"
    {
        MENUITEM "&Открыть",MI_OPEN
        MENUITEM SEPARATOR
        MENUITEM "&Выход",MI_EXIT
    }
}
 
 
//диалог
 
About DIALOG 60,15,93,50
STYLE WS_SYSMENU | WS_CAPTION | WS_POPUP | DS_MODALFRAME
CAPTION "О программе"
{
    CONTROL  "Автор программы\n -Я", -1, "STATIC", SS_CENTER, 12, 4, 72, 25 
    CONTROL  "Закрыть", ID_CLOSE, "BUTTON", BS_PUSHBUTTON, 27, 32, 43, 12
    CONTROL  "ЯЯЯЯЯЯ", ID_OK, "BUTTON", BS_PUSHBUTTON, 10, 12, 43, 12
}
 
 
Ia DIALOG 60,15,93,50
STYLE WS_SYSMENU | WS_CAPTION | WS_POPUP | DS_MODALFRAME
CAPTION "Об мне"
{
    CONTROL  "Олег)", -1, "STATIC", SS_CENTER, 12, 4, 72, 25 
    CONTROL  "Закрыть", ID_CLOSE, "BUTTON", BS_PUSHBUTTON, 27, 32, 43, 12
    CONTROL  "еще ", ID_NEXT, "BUTTON", BS_PUSHBUTTON, 10, 12, 43, 12
    
}
 
 
DrygieDl DIALOG 60,15,241,116
STYLE WS_SYSMENU | WS_CAPTION | WS_POPUP | DS_MODALFRAME
CAPTION "Об мне"
{
    CONTROL  "Кнопка-флажок",  ID_CHECK, "button", BS_AUTOCHECKBOX,  8, 60, 64, 12 
    CONTROL  "Статический элемент (текст)", ID_TEXT, "static", SS_LEFT, 8, 4, 104, 12 
    CONTROL  "Окно редактирования",  ID_EDIT, "edit", ES_LEFT | WS_BORDER,  8, 40, 104, 16 
    CONTROL  " ",ID_LIST,"listbox",LBS_STANDARD,8,76,68,36 
    CONTROL  " ",ID_COMBO,"combobox",CBS_SORT,  122, 56,108,56 
    CONTROL  "Групповая рамка", -1, "button", BS_GROUPBOX, 122, 4, 108, 40 
    CONTROL  "Селективная кнопка 1", ID_RADIO1, "button", BS_AUTORADIOBUTTON,  125, 16, 84, 12 
    CONTROL  "Селективная кнопка 2", ID_RADIO2, "button", BS_AUTORADIOBUTTON, 125, 28, 84, 12 
}
 
 
Files DIALOG 41,21,68,97
STYLE WS_SYSMENU | WS_CAPTION | WS_POPUP | DS_MODALFRAME
CAPTION "Список Файлов"
{
    CONTROL  " ",ID_LIST_FILES,"listbox",WS_BORDER | WS_VSCROLL,3,4,61,88
}
 
    
Odiskax1 DIALOG 41,21,68,97
STYLE WS_SYSMENU | WS_CAPTION | WS_POPUP | DS_MODALFRAME
CAPTION "Список Файлов"
{
    CONTROL  " ",ID_LIST_FILES,"listbox",WS_BORDER | WS_VSCROLL,3,4,61,88
}
 
 
 
 
ODiskax DIALOG 41, 21, 179, 148 
STYLE WS_SYSMENU | WS_CAPTION | WS_POPUP | DS_MODALFRAME 
CAPTION  "Информация о дисках" 
{ 
    CONTROL  "Логические диски", -1,  "STATIC", WS_BORDER, 72, 6, 65, 12 
    CONTROL "", ID_COMBO_DISK,  "COMBOBOX",  CBS_DROPDOWNLIST  |  WS_VSCROLL, 144, 6, 30, 75 
    CONTROL "Тип диска:", -1,  "STATIC", SS_LEFT, 9, 21, 39, 8 
    CONTROL  "Информация о томе", -1,"BUTTON", BS_GROUPBOX, 9, 35, 131, 41 
    CONTROL  "Метка тома:\nСерийный номер:\nФайловая система:", -1,  "STATIC", SS_LEFT, 13, 46, 71, 24 
    CONTROL  "Информация о диске", -1,  "BUTTON", BS_GROUPBOX, 9, 87, 131, 53 
    CONTROL  "Байтов на сектор:\nСекторов на кластер:\nВсего кластеров:\nСвободных кластеров:", -1,"STATIC", SS_LEFT, 13, 100, 77, 32 
    CONTROL "", ID_VOLINFO, "STATIC", SS_LEFT, 84, 46, 52, 24 
    CONTROL "",ID_DRIVE, "STATIC", SS_LEFT, 54, 21, 60, 8 
    CONTROL "", ID_DISK,  "STATIC",SS_RIGHT, 93, 100, 28, 32 
}
 
//подключаем рисунок
ID_BTNS BITMAP "lol.bmp"
и сам код
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
#include "head.h"
 
const int Sdvig=400;
int sw;
HINSTANCE hI; // дескриптор приложения
HWND hPanel;
int DialogOnline=0;
 
char szFile[128];//Для спецификации выбранного файла 
short nBuf[500];//Буфер для чтения из файла 2-байтовых данных 
BOOL bDataOK=FALSE;//Если  TRUE,  данные прочитаны в буфер  nBuf 
 
 
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int)
{
    try
    {
        char szClassName[]="MainWindow";//Произвольное имя класса главного ок
        char szTitle[]="бэ..жн..жена)";//Произвольный заголовок окна
        hI=hInst;
 
        WNDCLASS wc;//Структура wc типа WNDCLASS для задания характеристик окна 
            /*3арвгястрируен класс главного окна*/
        memset(&wc,0,sizeof(wc));
        wc.lpfnWndProc=WndProc;//Определяем оконную процедуру для главного окна 
        wc.hInstance=hInst;
        wc.hIcon=LoadIcon(NULL, IDI_APPLICATION) ; // Стандартная пиктограмма
        wc.hCursor=LoadCursor (NULL, IDC_ARROW) ; // Стандартный курсор мыши
        wc.hbrBackground=GetStockBrush (3) ; //Светло-серый фона ОКЩ
        wc.lpszMenuName="Main";
        wc.lpszClassName=szClassName;//Имя класса окна
        if(!RegisterClass(&wc))
            throw 1;//Вызов функции Windows регистрации класса окна
 
        HWND hwnd=CreateWindow
            (
            szClassName, //класс 
            szTitle,// заголовок окна
            WS_OVERLAPPEDWINDOW,//стиль
            10,//х координата
            10, //у коорданата
            600,//ширина
            800, //вышина
            HWND_DESKTOP,//родители
            NULL,//меню
            hInst,//
            NULL//
            ) ;
        ShowWindow(hwnd,SW_SHOWNORMAL);//Вызов функции Windows показа окна
                /*Организуем цикл обнаружения сообщений*/
        
        while(GetMessage (&Msg,NULL, 0, 0) ) //Если есть сообщенР1е,  передать его нам
        {   
            DispatchMessage (&Msg) ; //и вызвать оконную процедуру WndProc
            TranslateMessage(&Msg);
        }   
        return 0;
    }
    catch(int a)
    {
        MessageBox (NULL, VibErr(a), "Ошибка", MB_OK | MB_ICONWARNING | MB_ICONHAND);
    }
    catch(...)
    {
        MessageBox (NULL, "Неизвестная ошибка", "КРИТИЧЕСКАЯ ОШИБКА", MB_OK | MB_ICONWARNING | MB_ICONHAND);
    }
 
}
 
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch(msg)
    {//Переход по значению msg - номеру coo6mem>tx
    HANDLE_MSG(hwnd,WM_DESTROY, OnDestroy);
    HANDLE_MSG(hwnd,WM_PAINT,OnPaint);
    HANDLE_MSG(hwnd,WM_CREATE,OnCreate);
    HANDLE_MSG(hwnd,WM_COMMAND,OnCommand);
    HANDLE_MSG(hwnd,WM_RBUTTONDOWN,OnRBottonDown);
 
    
    default://В случае всех остальных сообщений Windows обработка
        return(DefWindowProc (hwnd,msg, wParam, lParam) );//их по умолчанию
    }//Конец оператора switch
}//Конец функции WndProc 
bool OnCreate(HWND hwnd,LPCREATESTRUCT)
{
    hRedPen=CreatePen(PS_SOLID,4,RGB(150,0,0));
    hGreenPen=CreatePen(PS_SOLID,4,RGB(0,150,0));
    hBluePen=CreatePen(PS_SOLID,4,RGB(0,0,150));
 
    hRedBrush=CreateSolidBrush(RGB(255,120,100));
    hGreenBrush=CreateSolidBrush(RGB(120,250,100));
    hBlueBrush=CreateSolidBrush(RGB(120,120,255));
 
 
    //создание структуры шрифтов 
    LOGFONT lf;
    ZeroMemory(&lf,sizeof(lf));
    // создание шрифта
    lf.lfHeight=60;
    strcpy(lf.lfFaceName,"Times New Roman Cyr");
    lf.lfEscapement=0; // угол наклона 0.0 град
    lf.lfItalic=1; // курсивом 
    hFont1=CreateFontIndirect(&lf);
 
    
    //панель инструментов
    TBBUTTON tbb[3];
    
 
    memset(tbb,0,sizeof(TBBUTTON)*3);
 
    tbb[0].iBitmap=0;
    tbb[0].idCommand=ID_1;
    tbb[0].fsState=TBSTATE_ENABLED;
 
    tbb[1].iBitmap=1;
    tbb[1].idCommand=ID_2;
    tbb[1].fsState=TBSTATE_ENABLED;
 
    tbb[2].iBitmap=2;
    tbb[2].idCommand=ID_3;
    tbb[2].fsState=TBSTATE_ENABLED;
    
    //CreateToolbarEx(hwnd, WS_CHILD | WS_BORDER | WS_VISIBLE | TBSTYLE_TOOLTIPS, 0,3,hI,ID_BTNS,tbb,3,16,16,16,16,sizeof(TBBUTTON)); 
    // не работает
 
     ZapisVFile();
    
    return TRUE;
}
 
 
void OnDestroy(HWND)
{
     PostQuitMessage(0);//вызвать функцию Windows завершения приложения
}
void OnPaint(HWND hwnd)
{
    char szText[]="строка текста:";
    PAINTSTRUCT ps; //строуктура для рисования в рабочей области
    RECT r; // прямоугольник для надписей
    TEXTMETRIC tm; // получение характеристек шрифтов
    HDC hdc=BeginPaint(hwnd,&ps);
    SetBkMode(hdc,TRANSPARENT);  //прозрачный текст
    SetTextColor(hdc,RGB(100,100,225));
    TextOut(hdc,5,10,szText,strlen(szText));
 
    
    Rectangle (hdc,90,120,550,320);
    SetTextColor(hdc,RGB(128,0,0));
    HFONT hOldFont=SelectFont(hdc,hFont1);
    GetTextMetrics(hdc,&tm);
    r.left=0;
    r.right=600;
    r.top=10;
    r.bottom=800;
    
    DrawText(hdc,"Абж А б ж",strlen("Абж А б ж"),&r,DT_CENTER);
 
    if (sw==1)
        FillRect(hdc,&ps.rcPaint,hBlueBrush);
    if (sw==2)
        FillRect(hdc,&ps.rcPaint,hGreenBrush);
 
 
      //Рисование
 
    
    Rectangle(hdc,10,40,110,140);// Квадрат инструментами по умолчанию
    SelectPen(hdc,hRedPen);//Выберем в контекст новое перо
    SelectBrush(hdc,hRedBrush); //и новую кисть
    Ellipse(hdc,130,40,230,140);//Круг новыми инструментами
    SelectPen(hdc,hGreenPen);//Выберем новое перо
    SelectBrush(hdc,hGreenBrush); //и новую кисть
    Pie(hdc,250,40,350,140,350,140,250,140);//Сектор опять новыми инструментами
    SelectPen(hdc,hBluePen);//Выберем новое перо
    SelectBrush(hdc,hBlueBrush);//и новую кисть
    Chord(hdc,370,40,470,140,470,125,370,125);//Сегмент
 
 
 
    // везде абж)
    for(int i=10;i<1000;i+=10)
    {
        r.right+=i;
        r.top+=i;
        DrawText(hdc,"Абж А б ж",strlen("Абж А б ж"),&r,DT_CENTER);
    }
 
    // рисуем график
    int i=0;
    while ((i<500) && bDataOK)
    {
        int m;
        m=r.bottom-50-nBuf[i];
        SetPixel(hdc,i++,m,RGB(0,0,255));
    }
    
    EndPaint(hwnd,&ps);
 
}
 
 
 
 
 
void OnCommand(HWND hwnd,int id,HWND,UINT)
{
    OPENFILENAME ofn;
    char szFilter[]="Файлы данных(*.DAT)\0*.dat\0Bce файлы(*.*)\0*.*\0"; 
    DWORD nCnt;
 
 
    switch(id)
    {
    case MI_BLUE:
        InvalidateRect(hwnd,NULL,TRUE);
        sw=1;
        break;
    case MI_GREEN:
        sw=2;
        InvalidateRect(hwnd,NULL,TRUE);
        break;
    case MI_EXIT:
        DestroyWindow(hwnd);
    case ID_1: // Нажали      на  кнопку    1  -  изменить    цвет 
        sw=1; 
        InvalidateRect(hwnd,NULL,TRUE); 
        break ; 
     case ID_2: // Нажали       на  кнопку   2  -  изменить    цвет 
         sw=2 ; 
         InvalidateRect(hwnd,NULL,TRUE); 
        break; 
     case ID_3: //Нажали       на  кнопку    3  -  завершить      приложение 
        DestroyWindow(hwnd); 
     case MI_OPROGE:
         DialogOnline=2;
         DialogBoxA(hI,"About",hwnd,DlgProc);
         break;
     case MI_FILE:
         DialogOnline=1;
         DialogBox(hI,"Files",hwnd,DlgProc);
         break;
     case MI_DISK:
         DialogOnline=3;
         DialogBox(hI,"ODiskax",hwnd,DlgProc);
         break;
     case MI_OPEN:
         ZeroMemory (&ofn, sizeof (OPENFILENAME)  ) ; // Обнуляем  ofn 
         ofn.lStructSize=sizeof(OPENFILENAME);//Размер структуры 
         ofn.hwndOwner=hwnd;//Дескриптор главного окна-владельца диалога 
         ofn.lpstrFilter=szFilter;//Строка с шаблонами имен искомых файл
         ofn.lpstrFile=szFile;//Буфер для имени файла 
         ofn.nMaxFile=sizeof(szFile);
         ofn.Flags=OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST  ; 
         if(GetOpenFileName(&ofn))
         {
             HANDLE hFile=CreateFile(szFile,GENERIC_READ,0,0,OPEN_EXISTING,0,NULL);
             if(hFile!=INVALID_HANDLE_VALUE)
                 break;
             ReadFile(hFile,nBuf,2*500,&nCnt, NULL);
             CloseHandle(hFile);
             bDataOK=true;
             InvalidateRect(hwnd,0,TRUE);
             break;
         }
         else
             break;
         
         
    }
}
 
 
void OnRBottonDown(HWND hwnd,BOOL,int x,int y,UINT)
{
    // ПЛАВУЮЩИе МЕНЮ
    char str1[]="ФoH: Синий"; 
    char str2[]="Фон: Зеленый";     
    char str3[]="Выход"; 
    RECT rect; 
    HMENU hPopupMenu=CreatePopupMenu(); 
    AppendMenu (hPopupMenu,  MF_STRING,  MI_BLUE,  str1) ; 
    AppendMenu(hPopupMenu,  MF_STRING,  MI_GREEN, str2); 
    AppendMenu  (hPopupMenu,  MF_SEPARATOR, 0,  NULL); 
    AppendMenu (hPopupMenu,  MF_STRING,  MI_EXIT, str3  ) ; 
    GetWindowRect(hwnd,&rect); 
    TrackPopupMenu  (hPopupMenu,  TPM_LEFTALIGN | TPM_LEFTBUTTON, Msg.pt.x,Msg.pt.y, 0,hwnd,NULL)  ; 
    // _____________________________________________________________________//
}
 
 
char* VibErr(const int a)
{
    char* ret;
    switch(a)
    {
    case 1:
        ret="Не созданно главное окно";
        break;
    case 2:
        ret="Ошибка рисования";
        break;
    case 3:
        ret="Ошибка записи в файл";
        break;
    default:
        ret="Неизвестная ошибка";
        break;
    }
    return ret;
}
 
 
 
 
 
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
    switch (msg)
    {
        HANDLE_MSG(hwnd,WM_INITDIALOG,DlgOnInitDialog);
        HANDLE_MSG(hwnd,WM_COMMAND,DlgOnCommand);
    default:
        return false;
    }
}
 
BOOL DlgOnInitDialog(HWND hwnd,HWND,LPARAM)
{
    HANDLE hFile;
    DWORD dwSize;
    HANDLE hHeap;
    LPSTR szDrives;
    LPSTR szNext;
 
 
    switch(DialogOnline)
    {
    case 1: // получение файлов
        WIN32_FIND_DATA fd;//Структура для функций поиска файлов 
        hFile=FindFirstFile("*.*",&fd);//Найдем первым файл 
        if (hFile==INVALID_HANDLE_VALUE)  //Если не найден, завершить 
            return TRUE; 
        else 
            SendDlgItemMessage(hwnd,ID_LIST_FILES,  LB_ADDSTRING,0,(LPARAM)fd.cFileName);//в список 
        while(FindNextFile(hFile,&fd))//Поиск остальных файлов в цикле 
            SendDlgItemMessage(hwnd,ID_LIST_FILES,LB_ADDSTRING, 0, (LPARAM)  fd.cFileName)  ; //из структуры  fd  в список 
        return true;
        
    case 3:   // получение диков
        dwSize=GetLogicalDriveStrings(0  ,NULL) ; // Получим размер строки 
        hHeap=GetProcessHeap();//Указатель на кучу процесса 
        szDrives= (LPSTR) HeapAlloc (hHeap,  HEAP_ZERO_MEMORY,  dwSize); // Выделим памят
        GetLogicalDriveStrings(dwSize,szDrives);//Получим все наличные диски 
        szNext=szDrives;//Текущим адрес в строке =• начальному 
        while(szNext[0]!=0)
        { 
            SendDlgItemMessage(hwnd,ID_COMBO_DISK,CB_ADDSTRING,0, (LPARAM) szNext) ; 
            szNext=strchr  (szNext,0)+1; // Текущий адрес « следующему 
        } 
        HeapFree(hHeap, 0,szDrives); // Освободим память 
        return TRUE; 
 
    default:    
        return true;
    }
 
}
 
void DlgOnCommand(HWND hwnd,int id,HWND,UINT CodeNotify)
{       
    char szVolume[5];
 
    switch (id)
    {
    case ID_OK:
        DialogBoxA(hI,"Ia",hwnd,DlgProc);
        break; 
    case ID_NEXT:
        DialogBoxA(hI,"DrygieDl",hwnd,DlgProc);
        break;
    case ID_CLOSE:
        EndDialog(hwnd,0);
        break;
    case IDCANCEL:
        EndDialog(hwnd,0);
        break;
    case ID_COMBO_DISK:
        if(CodeNotify==CBN_SELCHANGE)// если изменился выбор
        {
            int Index=SendDlgItemMessage(hwnd,ID_COMBO_DISK,CB_GETCURSEL,0,0);
            SendDlgItemMessage(hwnd,ID_COMBO_DISK, CB_GETLBTEXT,(WPARAM) Index,(LPARAM)szVolume);
            FillInfo(hwnd,szVolume);
        }
 
    }
}
 
int FillInfo(HWND hwnd,LPSTR szVol)
{
    char szText[80];
    int nDriveType=GetDriveType(szVol);
    switch(nDriveType)
    {
    case DRIVE_REMOVABLE:
        strcpy(szText,"Съемный диск");
        break;
    case DRIVE_FIXED:
        strcpy (szText,"Жесткий диск");
        break;
    case DRIVE_CDROM:
        strcpy(szText,"Сидиром)");
        break;
    }
 
    SetWindowText  (GetDlgItem(hwnd,ID_DRIVE)  ,  szText) ; 
/*Получим информацию о логических характеристиках диска*/ 
    char szLabel[20];//Поле для метки тома 
    char szFat  [10] ; //Поле для типа файловой системы 
    char szTemp[20];//Поле для преобразования чисел в символы 
    DWORD dwVolSer,dwMaxLen,dwFlags;//Для  GetVolumelnformat ion() 
    if(!(GetVolumeInformation(szVol,szLabel,sizeof(szLabel),&dwVolSer, &dwMaxLen,&dwFlags,szFat,sizeof(szFat))))
        return 1;
    strcpy(szText,szLabel);//Копирование метки в строку вывода  szText 
    strcat(szText,"\n");//Добавление перевода строки 
    wsprintf(szTemp,"%X",dwVolSer);//Преобразование номера в символы 
    strcat (szText, szTemp); //Добавление строки с серийным номером 
    strcat(szText,"\n");//Добавление перевода строки 
    strcat(szText,szFat);//Добавление имени файловой системы 
    SetWindowText (GetDlgItem(hwnd, ID_VOLINFO),  szText) ; // Вывод в диалог 
    
    /*Пол у чин информацию о физических характеристиках диска*/ 
 
    DWORD dwSectorsPerCluster,dwBytesPerSector,dwFreeClusters,dwClusters; 
    GetDiskFreeSpace (szVol,  &dwSectorsPerCluster,&dwBytesPerSector, &dwFreeClusters,&dwClusters); 
    wsprintf (szTemp,  "%d",dwBytesPerSector) ;//Размер сектора в символы 
    strcpy (szText,  szTemp)  ; //Копирование в строку вывода  szText 
    strcat(szText,"\n");//Добавление перевода строки 
    wsprintf(szTemp,"%d",dwSectorsPerCluster);//Размер кластера в символы 
    strcat (szText,  szTemp)  ; //Добавление к строке вывода 
    strcat(szText,"\n");//Добавление перевода строки 
    wsprintf (szTemp, "%d",  dwClusters)  ;  //Число кластеров в символы 
    strcat(szText,szTemp);//Добавление к строке вывода 
    strcat(szText,"\n");//Добавление перевода строки 
    wsprintf(szTemp,"%d",dwFreeClusters);//Число свободных кластеров в символы
    strcat(szText,szTemp); //Добавление к строке вывода 
    SetWindowText  (GetDlgItem(hwnd, ID_DISK)  ,  szText)  ; //Вывод в диалог 
 
    return 0;
}
 
void ZapisVFile()
{
    char fname[]="C://sp1.dat";//Имя создаваемого файла 
    short nBuf2[500];//Массив с тестовыми данными для записи в файл 
    int x;
    float   c4=0.01;
    int c1=200;
    int c2=150;
    int c3=250;
    int c5=350;
 
    
 
    for(int i=0;i<500;i++)
    { 
        x=i;//Преобразуем счетчик цикла в число с плавающей точкой 
        nBuf[i]=(int) c1*(float)exp((float)-x/c2)+c3*(float)exp((float)-c4*(x-c5)*(x-c5));
        bDataOK=1;
        nBuf2[i]=(int) c1*(float)exp((float)-x/c2)+c3*(float)exp((float)-c4*(x-c5)*(x-c5)); //Вычисляем значения 
    } 
   //Создадим новый файл и запишем в него тестовый массив*/ 
    HANDLE hFile=CreateFile  (fname,GENERIC_WRITE, 0,0,  CREATE_ALWAYS, 0 ,NULL)  ; 
    DWORD nCnt;//Счетчик записанного 
    if(!WriteFile(hFile,nBuf2, 2*500,&nCnt,NULL))//Запись в файл 
        throw 3;
 
}
0
ЛеЖиК)
185 / 60 / 4
Регистрация: 29.04.2011
Сообщений: 642
05.06.2011, 22:38  [ТС] #4
ваше нет вариантов?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2011, 22:38
Привет! Вот еще темы с решениями:

Чтение памяти процесса через загруженную в него dll
Доброе утро Подскажите решение проблемы При инжекте dll в процесс, надо чтобы...

Запись строки в массив, сортировка, удаление и запись в файл
Нужна помощь. Из edit box к нам приходят строки мы их фильтруем. нужно строки...

Запись и чтение из файла
Добрый день! Хочу на диске С и во всех его подкаталогах найти все файлы в...

Запись и чтение wchar_t строк
Всем добрый вечер. есть wchar_t str, как её запихнуть в текстовый файл...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru