Вернуться   Компьютерный форум > Компьютеры > Программы > Программирование
 
 
Опции темы
Старый 10.10.2015, 16:00   #1 (ссылка)
Новичок
 
Регистрация: 27.07.2012
Сообщений: 82
Репутация: 1
По умолчанию программирование графического интерфейса с помощью WINApi на C++

Надо сделать лабу.

Пока сделал только это:
Код:
#include "stdafx.h"
#include "yap3.h"
#include <fstream>
#include <iostream> 

using namespace std;

#define MAX_LOADSTRING 100
#define IDB_CANCEL 3002               //Идентификатор кнопки отмена
#define IDB_SAVE 3001                   //Идентификатор кнопки Сохранить
#define IDE_FIELD 3003                  //Идентификатор поля для ввода имя файла
#define IDE_AREA 3004                    //Идентификатор поля для ввода того, что сохраниться в файле

// Глобальные переменные:
HINSTANCE hInst;                                // текущий экземпляр
WCHAR szTitle[MAX_LOADSTRING];                  // Текст строки заголовка
WCHAR szWindowClass[MAX_LOADSTRING];            // имя класса главного окна
HWND hWnd;                                                                //десктриптор главного окна 
HWND Savebuttom;                                                      //дескриптор кнопки Сохранить
HWND Cancelbuttom;                                                    //дескриптор кнопки Отмена
HWND TextField;                                                            // дестриптор "edit" де будет именя файла
HWND TextArea;                                     // дестриптор "edit"где впишется текст
char  chText[70];                                    //имя файла
char  Text[100];                                     // текст файла
WORD cbCount = 0;                               //размер текста в файле

//Здесь стандартный winmain


//
//  ФУНКЦИЯ: MyRegisterClass()
//
//  НАЗНАЧЕНИЕ: регистрирует класс окна.

//   ФУНКЦИЯ: InitInstance(HINSTANCE, int)
//
//   НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	ofstream Write;                   
	cbCount = 0;                     
	ifstream read;
    switch (message)
    {
	case WM_CREATE: 
		GetClientRect(hWnd, &rect);
		Savebuttom = CreateWindowW(L"button", L"Сохранить", WS_CHILDWINDOW | BS_PUSHBUTTON | WS_VISIBLE,
			rect.left + 100, rect.bottom-100, 100, 50, hWnd, (HMENU) IDB_SAVE, hInst, NULL);
		Cancelbuttom = CreateWindowW(L"button", L"Отменить", WS_CHILDWINDOW | BS_PUSHBUTTON | WS_VISIBLE,
			rect.right - 200, rect.bottom - 100, 100, 50, hWnd,(HMENU) IDB_CANCEL, hInst, NULL);
		EnableWindow(Cancelbuttom,FALSE);
		TextField = CreateWindowW(L"edit", L"Текстовое поле", WS_CHILDWINDOW | ES_AUTOHSCROLL | WS_VISIBLE | ES_LEFT | WS_BORDER| ES_OEMCONVERT,
			rect.right/2.-100, rect.bottom/2.-100, 200, 20, hWnd, (HMENU)IDE_FIELD, hInst, NULL);
		TextArea= CreateWindowW(L"edit", L"Текстовая область", WS_CHILDWINDOW | WS_VISIBLE | WS_BORDER | ES_MULTILINE,
			rect.right / 2.-100, rect.bottom / 2.-50, 200, 300, hWnd, (HMENU) IDE_AREA, hInst, NULL);
		break;
    case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
			case IDE_FIELD:
				/*if (!cbCount)
				{
					chText = "text.txt";
				}*/
				break;
			case IDB_SAVE:
				cbCount = SendMessage(TextField, EM_GETLINE, 20, (LPARAM)chText);
				Write.open(chText);
				cbCount = SendMessage(TextArea, EM_GETLINE, 20, (LPARAM)Text);
				MessageBox(hWnd,chText, "Имя файла ", MB_OK);
				MessageBox(hWnd,Text, "Текст файла ", MB_OK);
				Write << Text;
				Write.close();
			case IDB_CANCEL:
				read.open(chText);
				break;
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
            // TODO: Добавьте сюда любой код прорисовки, использующий HDC...
            EndPaint(hWnd, &ps);
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// Обработчик сообщений для окна "О программе".
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
Упорно не понимаю почему файл создаётся через раз, и то пустой, да ещё вместо полного названия присутствует только первая буква.
Делать лабу полностью не надо, лишь объяснить почему не создаётся и не сохраняется файл, а остальное я думаю сам сдюжу. В крайнем случае спрошу здесь.
Очень надеюсь на вашу помощь!
kirill.. вне форума  
Старый 10.10.2015, 16:01   #2 (ссылка)
Новичок
 
Регистрация: 27.07.2012
Сообщений: 82
Репутация: 1
По умолчанию

Задание такое: Пользователь в текстовое поле указывает имя файла и вводит текст в текстовую область. При нажатии кнопки "Сохранить" текст записывается в файл. При нажатии кнопки "Отменить" - в текстовую область загружается содержимое файла, если он был сохранен. Кнопка "Отменить" должна быть доступна только если пользователь сохранил файл и изменил текст после сохранения. Если имя файла не указано, то оно задается автоматически - text.txt.
kirill.. вне форума  
Ads
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неверное отображение графического файла BoBa65 Графика 3 23.03.2013 20:11
Как увеличить резкость графического файла? Базаров Графика 2 08.01.2013 15:53
Сброс графического ускорителя VEROVOLINE Неисправности, настройка 8 08.10.2012 02:14
winapi Gard Программирование 0 26.08.2011 20:14
Програмируем в интернете на WinApi,C++,Masm32 Serhii Parvuliusov Веб-строительство 0 20.10.2007 14:02


Текущее время: 21:58. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.