Форум программистов, компьютерный форум CyberForum.ru

Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) - C++

Восстановить пароль Регистрация
 
androidos
 Аватар для androidos
29 / 27 / 1
Регистрация: 07.07.2011
Сообщений: 744
30.12.2011, 17:30     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #1
Всем хай!
Помогите написать простую програмулину. Например, форма, на ней техтбох, кнопка. Вводишь текст, нажимаешь на кнопку и всё записывается в фаил. Ну примерно так, если можно - то с комментариями. Сам C++ не знаю, хотя были попытки освоить, но больше нет желания связываться с этим языком. Вообщем вот, кого не затруднит, то помогите. Желательно на WINAPI или Visual C++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2011, 17:30     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++)
Посмотрите здесь:

Вводишь число от 1 до 7 и выводит день недели.Вводишь 0 выход. C++
C++ Правильно ли я всё сделал? CGI и Visual C++
C++ WinApi MsgBox в Visual C++ не дает откомплимировать!
C++ Объясните как сохранить текст в фаил (BCB6)
C++ Текст записывается в квадратную матрицу, а затем прочитывается по спирали, начиная с центра
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
30.12.2011, 20:13     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #2
вот, набросал что-то
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
#include <Windows.h>
 
HWND h, button, h_text;
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{ 
 
    WNDCLASSEX wc;
    MSG msg;
    ZeroMemory(&wc,sizeof(wc));
 
    wc.cbSize        = sizeof(wc);      
    wc.lpfnWndProc   = WndProc;
    wc.hInstance     = hInstance;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH);
    wc.lpszClassName = "MyClass";
    RegisterClassEx(&wc);
    // создаем окно
    h = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, wc.lpszClassName,"",WS_SYSMENU | WS_MINIMIZEBOX,
        300, 300, 450, 240, NULL, NULL, (HINSTANCE)hInstance, 0);
    //кнопку
    button =  CreateWindow("button", "Write File",
        WS_CHILD | WS_VISIBLE ,365,180,70,25, h, NULL, hInstance, 0);
    // текст. редактор
    h_text =  CreateWindow("edit", "bla bla bla ",
        WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_VSCROLL | WS_HSCROLL, 20,20,400,150, h, NULL, hInstance, 0);
    
    //показываем
    ShowWindow(h, nCmdShow);
    UpdateWindow(h);
 
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    case WM_COMMAND:
        {
            if( (HWND)lParam == button)
            {   
                int len = SendMessage(h_text, WM_GETTEXTLENGTH, 0, 0); // узнаем длину всего текста
                char* pPass;
                pPass = new char [len]; // выделяем память для текста
                SendMessage(h_text, WM_GETTEXT, len, (long)pPass); // копируем текст
                
                char patch[MAX_PATH] ="";
                GetModuleFileName(0, patch, MAX_PATH); // узнаем путь к нашему .ехе файлу
                for (int i=strlen(patch); i>1; --i)
                    if(patch[i] != '\\')
                        patch[i] = '\0';
                    else break;
                strcat(patch, "text.txt");      
                DWORD dw;
                // в дериктории c нашим .ехе файлом создаем текстовый файл
                HANDLE file = CreateFile(patch, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
                if( !file)
                {
                    MessageBox(0,"текстовый файл не создан",0,0);
                    break;
                }
                // делаем запись в  text.txt
                WriteFile(file, pPass, len, &dw, 0);
                //закрываем 
                CloseHandle(file);
                //освобождаем занятый блок памяти
                delete [] pPass;
            }
            break;  
        }
 
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
}
androidos
 Аватар для androidos
29 / 27 / 1
Регистрация: 07.07.2011
Сообщений: 744
30.12.2011, 21:01  [ТС]     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #3
Не совсем понял, у меня на patch ругается. Вместо patch надо путь до exe указать или как?
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
30.12.2011, 21:08     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #4
ничего не нужно указывать. Пишите текст, нажимаете на кнопку. Текстовый файл создается рядом с исполнимым. У меня всё работает. А что за ошибку пишет?
androidos
 Аватар для androidos
29 / 27 / 1
Регистрация: 07.07.2011
Сообщений: 744
30.12.2011, 22:35  [ТС]     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #5
cannot convert parameter 2 from 'char [260]' to 'LPWSTR
Единственное, я добавил L, где CreateWindow, ато он на кодировку ругался. Теперь ругается только на patch
jonson
 Аватар для jonson
231 / 204 / 61
Регистрация: 18.03.2010
Сообщений: 749
30.12.2011, 23:42     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #6
androidos, в свойствах проекта укажи не использовать юникод
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 02:03     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++)
Еще ссылки по теме:

C++ Code::Blocks Когда нажимаешь среднюю среднюю кнопку мыши, то вставляется содержимое буфера обмена. Как это можно изменить?
C++ Курсовая работа. В файл *.txt не записывается текст
Скачал Visual studio русскую версию, но всё по английски C++

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

Или воспользуйтесь поиском по форуму:
androidos
 Аватар для androidos
29 / 27 / 1
Регистрация: 07.07.2011
Сообщений: 744
31.12.2011, 02:03  [ТС]     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++) #7
Не помогает...

Добавлено через 1 час 16 минут
Разобрался, спасибо большое!!! А на Visual C++ c WinForms легко такое сделать?
Yandex
Объявления
31.12.2011, 02:03     Вводишь текст, нажимаешь на кнопку и всё записывается в фаил(WinApi или Visual C++)
Ответ Создать тему
Опции темы

Текущее время: 20:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru