Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
donz
1 / 1 / 0
Регистрация: 13.03.2013
Сообщений: 22
#1

Ошибка доступа при выводе в listbox символа из файла - C++ WinAPI

20.11.2016, 14:36. Просмотров 188. Ответов 1
Метки нет (Все метки)

почему это произошло и как это можно починить?
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
#include "windows.h"
#include "resource.h"
#define IDB_BUTTONF1            102
#define IDB_BUTTONF2            103
#define IDC_ListBox1                104
#define IDC_ListBox2                105
LRESULT CALLBACK WndProc(HWND,UINT, WPARAM,LPARAM);
 
HWND hList1;
HWND hList2;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){
    static char szAppName[] = "Compare";
    HWND hwnd;
    MSG msg;
    WNDCLASSEX wndclass;
 
    wndclass.cbSize = sizeof(wndclass);
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = (LPWSTR)szAppName;
    wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 
    RegisterClassEx(&wndclass);
 
    hwnd = CreateWindow(
        (LPWSTR)szAppName,
        L"Compare",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInstance,
        NULL);
    HWND hButtonF1 = CreateWindow(L"button", L"Открыть", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,50,410,70,25,hwnd,(HMENU)IDB_BUTTONF1,hInstance,NULL);
    HWND hButtonF2 = CreateWindow(L"button", L"Открыть", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,540,410,70,25,hwnd,(HMENU)IDB_BUTTONF2,hInstance,NULL);
    hList1 = CreateWindow(L"listbox", L"List1", WS_CHILD|WS_VISIBLE|WS_BORDER, 10,10, 450,400,hwnd,(HMENU)IDC_ListBox1, hInstance, NULL);
    hList2 = CreateWindow(L"listbox", L"List2", WS_CHILD|WS_VISIBLE|WS_BORDER, 510,10, 450,400,hwnd,(HMENU)IDC_ListBox2, hInstance, NULL);
    ShowWindow(hwnd, iCmdShow);
 
    UpdateWindow(hwnd);
 
    while(GetMessage(&msg, NULL,0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam){
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    HANDLE hf; 
    OPENFILENAME ofn,ofn2;
    char szFile[260];
    switch(iMsg){
    case WM_COMMAND:
        if(wParam == IDB_BUTTONF1){
            ZeroMemory(&ofn,sizeof(OPENFILENAME));
            ofn.lStructSize = sizeof(OPENFILENAME);
            ofn.hwndOwner = hwnd;
            ofn.lpstrFile = (LPWSTR)szFile;
            ofn.nMaxFile = sizeof(szFile);
            ofn.lpstrFilter = L"All\0*.*\0Text\0*TXT\0";
            ofn.nFilterIndex = 1;
            ofn.lpstrFileTitle = NULL;
            ofn.nMaxFileTitle = 0;
            ofn.lpstrInitialDir = NULL;
            ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
            if (GetOpenFileName(&ofn)==TRUE) 
                hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
                FILE_SHARE_READ|FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES) NULL,
                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
                (HANDLE) NULL);
            bool read;
            int sizef = GetFileSize(hf,(LPDWORD)ofn.lpstrFile);
            char sim;
            DWORD buf;
            for(int i=0;i<sizef;i++){
                read = ReadFile(hf,&sim,sizeof(sim),&buf,NULL);
                SendMessage(hList1, LB_ADDSTRING, 0, (LPARAM)sim);
            
            //SendMessage(hList1, LB_ADDSTRING, 0, (LPARAM));
        }
        }
        return 0;
    case WM_PAINT:
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 14:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка доступа при выводе в listbox символа из файла (C++ WinAPI):

Ошибка при выводе файла на озвучку - C++ WinAPI
Здравствуйте товарищи, есть проблема. Пытаюсь вывести файл на озвучку, в проге присутстует повышение частоты дискритизации и получение...

ошибка в выводе инфы из файла - C++
Почему выводит две строчки (одну не существующую) ЗЫ Чет с поиском не врубаюсь...как сделать так что если (по условию) два абонента, то...

Кракозябры при выводе из файла UTF-8 - C++
Здравствуйте. Тема кодировки достаточно популярна. Правда, в этих всех темах я, все же, не нашел то, что хотел, а именно: при считывании...

Ошибка при выводе с помощью BitBlt - C++ WinAPI
Добрый день. Подскажите, почему такой код выводит кружок поверх окна hDC=GetDC(hWnd); Ellipse(hDC, 10, 10, 50, 50); А вот такой...

Непонятная ошибка при преобразовании и выводе строки - C++ WinAPI
Вечер добрый. Возникла не понятная мне проблема при выводе на экран. При использовании, например, ExtTextOut, с обычной строкой WCHAR вывод...

Функции Setup API, ошибка при выводе списка устройств - C++ WinAPI
Вывожу данные о системной информации ПК, список устройств в файл, но компилятор указывает на невозможность использовать данные функции. ...

1
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,908
21.11.2016, 19:14 #2
Цитата Сообщение от donz Посмотреть сообщение
почему это произошло и как это можно починить?
donz, можно воспользоваться отладчиком. Установим контрольную точку на строчке
C++
1
  if (GetOpenFileName(&ofn)==TRUE)
далее выполним несколько команд "Step". В какой строке возникает ошибка?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 19:14
Привет! Вот еще темы с ответами:

Сделать сортировку при выводе текста из текстового файла в ListBox - C#
Нужно сделать сортировку, по Выигрышу &quot;Рейтинг&quot; Проблема такая, что в текстовом файле числа и названия.Вот файл: Игрок Виталя,...

Ошибка при выводе строк из файла - C++
Помогите пожалуйста разобраться в чем ошибка. Весь код писать не буду просто покажу как я вношу данные в файл и считываю. int j=i; ...

Ошибка при выводе файла записи - Delphi
Задача состоит в том, что надо создать файл записи (музыка: исполнитель, название, год, жанр), затем упорядочить внесенные данные по...

Ошибка при выводе бинарного файла - C++ Builder
Добрый день! Ошибка вот в чем: при сортировке массива, в одну ячейку StringGrid вставляет две переменные. И из-за этого наверно теряется...


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

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

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