Проект текстового редактора

39677
знаков
0
таблиц
4
изображения

СОДЕРЖАНИЕ

Постановка задачи

Краткие теоретические сведения

Результаты выполнения программы

Заключение

Литература

Листинг программы


ПОСТАНОВКА ЗАДАЧИ

Составить Win32 App проект простейший текстовый редактор, который позволяет выполнять операции редактирование текста, копирование и вставку из одного окна проекта в другое окно проекта. Использовать вызов диалогов сохранения и открытия файла, а также диалог выбора шрифта. Все диалоги применяются к тексту в редакторе.


КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Работа с функциями вызова стандартных диалогов производится следующим образом:

1. Объявляются переменные соответствующих структур:

static COLORREF textColor;

// Переменные для стандартных диалогов "Open", "Save as"

static OPENFILENAME ofn;

static char szFile[MAX_PATH];

// Переменные для стандартного диалога "Color"

static CHOOSECOLOR cc; // common dialog box structure

static COLORREF acrCustClr[16]; // array of custom colors

// Переменные для стандартного диалога "Font"

static CHOOSEFONT chf;

static HFONT hFont;

static LOGFONT lf;

2. Инициализируются соответствующие структуры в обработчике события создания окна (окна диалога).

switch (uMsg)

{

case WM_CREATE:

// Инициализация структуры ofn

ofn.lStructSize = sizeof(OPENFILENAME);

ofn.hwndOwner = hWnd;

ofn.lpstrFile = szFile;

ofn.nMaxFile = sizeof(szFile);

// Инициализация структуры cc

cc.lStructSize = sizeof(CHOOSECOLOR);

cc.hwndOwner = hWnd;

cc.lpCustColors = (LPDWORD) acrCustClr;

cc.Flags = CC_FULLOPEN | CC_RGBINIT;

// Инициализация структуры chf

chf.lStructSize = sizeof(CHOOSEFONT);

chf.hwndOwner = hWnd;

chf.lpLogFont = &lf;

chf.Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT;

chf.nFontType = SIMULATED_FONTTYPE;

break;

}

3. Вызывается соответствующая функция в обработчике событий нажатия кнопки вызова соответствующего диалога.

case WM_COMMAND:

switch (LOWORD(wParam))

{

case IDM_OPEN:

strcpy(szFile, "");

success = GetOpenFileName(&ofn);

if (success)

MessageBox(hWnd, ofn.lpstrFile, "Открывается файл:", MB_OK);

else

MessageBox(hWnd, ESC_OF"GetOpenFileName",

"Отказ от выбора или ошибка", MB_ICONWARNING);

break;

case IDM_SAVE_AS:

strcpy(szFile, "");

success = GetSaveFileName(&ofn);

if (success)

MessageBox(hWnd, ofn.lpstrFile,

"Файл сохраняется с именем:", MB_OK);

else

MessageBox(hWnd, ESC_OF"GetSaveFileName",

"Отказ от выбора или ошибка", MB_ICONWARNING);

break;

case IDM_BKGR_COLOR:

if (ChooseColor(&cc))

SetClassLong(hWnd, GCL_HBRBACKGROUND,

(LONG)CreateSolidBrush(cc.rgbResult));

break;

case IDM_TEXT_COLOR:

if (ChooseColor(&cc)) textColor = cc.rgbResult;

break;

case IDM_CHOOSE_FONT:

if(ChooseFont(&chf)) hFont = CreateFontIndirect(chf.lpLogFont);

break;

РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ ПРОГРАММЫ



ЗАКЛЮЧЕНИЕ

В процессе разработки программы использовался в большом объеме теоретический материал ВУЗа и материал по программированию из учебников, вспомогательных электронных средств и средств Интернета, что способствовало закреплению наработанных навыков и умений в этих интересных областях знаний.

Полное тестирование программы показало что, программа реализована в полном объеме в соответствии с заданными требованиями и поставленной задачей. Полностью отлажена и проработана. Поставленная задача выполнена.

Программа построена на классе MFC для Win 32 приложений.


ЛИТЕРАТУРА

1.         Д.Рихтер Создание эффективных Win32 приложений.

2.         П. В. Румянцев Азбука программирования в WIN 32 API.

3.         Ч. Петзолд. Программирование для Windows 95. Том 1.

4.         Архипова Е.Н. Электронный курс по WIN 32 API.


ЛИСТИНГ ПРОГРАММЫ

Код модуля mein.cpp

// mein.cpp : implementation file

//

#include "stdafx.h"

#include "Menu.h"

#include "mein.h"

// mein dialog

IMPLEMENT_DYNAMIC(mein, CDialog)

mein::mein(CWnd* pParent /*=NULL*/)

: CDialog(mein::IDD, pParent)

{

}

mein::~mein()

{

}

void mein::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(mein, CDialog)

END_MESSAGE_MAP()

// mein message handlers

Код модуля menu.cpp

// Menu.cpp : Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "Menu.h"

#include "MenuDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CMenuApp

BEGIN_MESSAGE_MAP(CMenuApp, CWinApp)

ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

// CMenuApp construction

CMenuApp::CMenuApp()

{

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}

// The one and only CMenuApp object

CMenuApp theApp;

// CMenuApp initialization

BOOL CMenuApp::InitInstance()

{

// InitCommonControls() is required on Windows XP if an application

// manifest specifies use of ComCtl32.dll version 6 or later to enable

// visual styles. Otherwise, any window creation will fail.

InitCommonControls();

CWinApp::InitInstance();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need

// Change the registry key under which our settings are stored

// TODO: You should modify this string to be something appropriate

// such as the name of your company or organization

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

CMenuDlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

// Since the dialog has been closed, return FALSE so that we exit the

// application, rather than start the application's message pump.

return FALSE; }

Код модуля nauti.cpp

// m_nauti.cpp : implementation file

//

#include "stdafx.h"

#include "Menu.h"

#include "m_nauti.h"

#include ".\m_nauti.h"

#include "MenuDlg.h"

#include <string>

using namespace std;

// m_nauti dialog

IMPLEMENT_DYNAMIC(m_nauti, CDialog)

m_nauti::m_nauti(CWnd* pParent /*=NULL*/)

: CDialog(m_nauti::IDD, pParent)

, m_pParent(pParent)

, m_nStartPos(0)

, strFind(_T(""))

, m_strText(_T(""))

, n_radio1(false)

, n_radio2(false)

, ddx_222(false)

{

}

m_nauti::~m_nauti()

{

}

void m_nauti::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_EDIT11, edit);

DDX_Control(pDX, IDC_BUTTON1, nauti_dalee);

DDX_Control(pDX, IDC_RADIO1, ddx_radio);

DDX_Radio(pDX, IDC_RADIO2, ddx_222);

}

BEGIN_MESSAGE_MAP(m_nauti, CDialog)

ON_EN_CHANGE(IDC_EDIT11, OnEnChangeEdit11)

ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)

ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)

ON_WM_DESTROY()

END_MESSAGE_MAP()

BOOL m_nauti::OnInitDialog()

{

CDialog::OnInitDialog();

//CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT11);

//pEdit->SetFocus();

//SetFocus();

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

// m_nauti message handlers

void m_nauti::OnEnChangeEdit11()// Едит---------------------------------

{

//CEdit *pmyEdit = (CEdit *)GetDlgItem(IDC_EDIT11);

//pmyEdit->SetFocus();

//SetFocus();

CString str;

edit.GetWindowText(str);

if(str.GetLength()>0)

{

nauti_dalee.ModifyStyle(WS_DISABLED,0);

nauti_dalee.Invalidate(FALSE);

}

else

{

nauti_dalee.ModifyStyle(0,WS_DISABLED);

nauti_dalee.Invalidate(FALSE);

}

}

void m_nauti::OnFind()//Галочка вниз--------------------------------------------

{

CButton *pBtnFind = (CButton *)GetDlgItem(IDC_BUTTON1);

// Получаем доступ к полям ввода

CEdit *pEdit = (CEdit *)((CMenuDlg *)m_pParent)->GetDlgItem(IDC_EDIT1);

CEdit *pFind = (CEdit *)GetDlgItem(IDC_EDIT11);

// Получаем текст из полей ввода

pFind->GetWindowText(strFind);

if (!IsDlgButtonChecked(IDC_CHECK1))

{

m_strText.MakeLower();

strFind.MakeLower();

}

int nStart, nEnd;

int nFindPos;

pEdit->GetSel(nStart, nEnd);

m_nStartPos = nEnd;

if (n_radio2)

{

nFindPos = m_strText.Find(strFind);

n_radio2 = FALSE;

}

else

nFindPos = m_strText.Find(strFind, m_nStartPos);

if (nFindPos == -1)

{

if (!n_radio1)

MessageBox(_T("Не удается найти \"") + strFind + _T("\"")

,_T("Блокнот"), MB_OK | MB_ICONINFORMATION);

}

else

{

// Нашли - выделяем найденное

pEdit->SetSel(nFindPos, nFindPos + strFind.GetLength());

// Определяем позицию, с которой надо продолжать поиск

m_nStartPos = nFindPos + strFind.GetLength();

}

}

void m_nauti::OnBnClickedButton1()//Найти далее---------------------------

{

CButton *pBtnFind = (CButton *)GetDlgItem(IDC_BUTTON1);

// Получаем доступ к полям ввода

CEdit *pEdit = (CEdit *)((CMenuDlg *)m_pParent)->GetDlgItem(IDC_EDIT1);

CEdit *pFind = (CEdit *)GetDlgItem(IDC_EDIT11);

CString strFind;

pEdit->GetWindowText(m_strText);

pFind->GetWindowText(strFind);

int nStart, nEnd;

int nFindPos;

if (IsDlgButtonChecked(IDC_RADIO2))

OnFind();

if (IsDlgButtonChecked(IDC_RADIO1))

{

if (!IsDlgButtonChecked(IDC_CHECK1))

{

m_strText.MakeLower();

strFind.MakeLower();

}

n_radio1 = TRUE;

n_radio2 = TRUE;

pEdit->GetSel(nStart, nEnd);

CString sz;

int nCountText = m_strText.GetLength();

int nCountFind = strFind.GetLength();

int n = m_strText.Delete(nStart, nCountText);

string strTmp = m_strText;

static const basic_string <char>::size_type npos = -1;

size_t ind = strTmp.rfind (strFind);

if (ind != npos )

pEdit->SetSel((int)ind, ind + nCountFind);

else

MessageBox(_T("Не удается найти \"") + strFind + _T("\"")

,_T("Блокнот"), MB_OK | MB_ICONINFORMATION);

n_radio1 = FALSE;

n_radio2 = FALSE;

}

GetDlgItem(IDC_EDIT11)->SetFocus();

}

void m_nauti::OnBnClickedCancel()//Выход------------------------------

{

OnCancel();

// Сбрасываем указатель на дочернее окно в родительском окне

((CMenuDlg *)m_pParent)->m_pAddDlg = NULL;

// Уничтожаем дочернее окно

DestroyWindow();

}

void m_nauti::OnDestroy()//ОН дестрой--------------------------------------

{

CDialog::OnDestroy();

// Уничтожаем объект

delete this;

}

Код модуля zamenit.cpp

// Zamenit.cpp : implementation file

//

#include "stdafx.h"

#include "Menu.h"

#include "Zamenit.h"

#include ".\zamenit.h"

#include "MenuDlg.h"

// Zamenit dialog

IMPLEMENT_DYNAMIC(Zamenit, CDialog)

Zamenit::Zamenit(CWnd* pParent /*=NULL*/)

: CDialog(Zamenit::IDD, pParent)

, m_pParentz(pParent)

, m_nStartPosR(0)

, m_bFlagRepl(false)

, m_bFlagReplAll(false)

, strText(_T(""))

, strFind(_T(""))

{

}

Zamenit::~Zamenit()

{

//m_pParentz = pParent;

}

void Zamenit::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(Zamenit, CDialog)

ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)

ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)

ON_EN_CHANGE(IDC_EDIT22, OnEnChangeEdit22)

ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)

ON_WM_DESTROY()

ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)

END_MESSAGE_MAP()

// Zamenit message handlers

void Zamenit::OnBnClickedButton1()//Найти далее----------------------------

{

// Получаем доступ к полям ввода

CEdit *pEdit = (CEdit *)(((CMenuDlg *)AfxGetMainWnd())->GetDlgItem(IDC_EDIT1));

CEdit *pFind = (CEdit *)GetDlgItem(IDC_EDIT22);

// Получаем текст из полей ввода

//CString strText, strFind;

pEdit->GetWindowText(strText);

pFind->GetWindowText(strFind);

if (!IsDlgButtonChecked(IDC_CHECK1))

{

strText.MakeLower();

strFind.MakeLower();

}

int nStart, nEnd;

int nFindPos;

pEdit->GetSel(nStart, nEnd);

m_nStartPosR = nEnd;

nFindPos = strText.Find(strFind, m_nStartPosR);

if (nFindPos == -1 && !m_bFlagReplAll)

{

MessageBox(_T("Не удается найти \"") + strFind + _T("\"")

,_T("Блокнот"), MB_OK | MB_ICONINFORMATION);

}

else

{

// Нашли - выделяем найденное

pEdit->SetSel(nFindPos, nFindPos + strFind.GetLength());

// Определяем позицию, с которой надо продолжать поиск

m_nStartPosR = nFindPos + strFind.GetLength();

}

m_bFlagRepl = TRUE;

}

void Zamenit::OnBnClickedButton2()//Заменить---------------------------

{

int nStart, nEnd;

//CEdit *pEdit = (CEdit *)((CMenuDlg *)m_pParent)->GetDlgItem(IDC_EDIT1);

//CEdit *pEdit = (CEdit *)(CMenuDlg *)GetDlgItem(IDC_EDIT1);

CEdit *pEdit = (CEdit *)(((CMenuDlg *)AfxGetMainWnd())->GetDlgItem(IDC_EDIT1));

pEdit->GetSel(nStart, nEnd);

if (!m_bFlagRepl)

{

OnBnClickedButton1();

m_bFlagRepl = TRUE;

}

else if (m_bFlagRepl && (nStart != nEnd))

{

//CEdit *pEdit = (CEdit *)((CMenuDlg *)m_pParent)->GetDlgItem(IDC_EDIT1);

CEdit *pEdit = (CEdit *)(((CMenuDlg *)AfxGetMainWnd())->GetDlgItem(IDC_EDIT1));

CEdit *pSours = (CEdit *)GetDlgItem(IDC_EDIT2);

CString strSours;

pSours->GetWindowText(strSours);

pEdit->ReplaceSel(strSours);

OnBnClickedButton1();

}

}

void Zamenit::OnEnChangeEdit22()

{

CString strFind1;

GetDlgItemText(IDC_EDIT22, strFind1);

CButton *p1 = (CButton *)GetDlgItem(IDC_BUTTON1);

CButton *p2 = (CButton *)GetDlgItem(IDC_BUTTON2);

CButton *p3 = (CButton *)GetDlgItem(IDC_BUTTON3);

if (strFind1 != _T(""))

{

p1->EnableWindow(TRUE);

p2->EnableWindow(TRUE);

p3->EnableWindow(TRUE);

}

else

{

p1->EnableWindow(FALSE);

p2->EnableWindow(FALSE);

p3->EnableWindow(FALSE);

}

}

void Zamenit::OnBnClickedButton3()//Заменить все---------------------------

{

// Получаем доступ к полям ввода

//CEdit *pEdit = (CEdit *)((CMenuDlg *)m_pParent)->GetDlgItem(IDC_EDIT1);

//CEdit *pEdit = (CEdit *)(CMenuDlg *)GetDlgItem(IDC_EDIT1);

CEdit *pEdit = (CEdit *)(((CMenuDlg *)AfxGetMainWnd())->GetDlgItem(IDC_EDIT1));

CEdit *pFind = (CEdit *)GetDlgItem(IDC_EDIT22);

//pEdit->SetSel(0, 0);

// Получаем текст из полей ввода

//CString strText, strFind;

pEdit->GetWindowText(strText);

pFind->GetWindowText(strFind);

int nStart, nEnd;

int nFindPos;

pEdit->GetSel(nStart, nEnd);

m_nStartPosR = nEnd;

nFindPos = strText.Find(strFind, m_nStartPosR);

m_nStartPosR = nFindPos + strFind.GetLength();

m_bFlagReplAll = TRUE;

int nCountText = strText.GetLength();

while (nCountText)

{

OnBnClickedButton2();

nCountText--;

}

pEdit->SetSel(0, 0);

m_bFlagReplAll = FALSE;

}

void Zamenit::OnDestroy()//Он дестрой---------------------------------------

{

CDialog::OnDestroy();

// Уничтожаем объект

delete this;

//OnCancel();

// Сбрасываем указатель на дочернее окно в родительском окне

//((CMenuDlg *)m_pParent)->m_ppereutiDlg = NULL;

//((CMenuDlg *)AfxGetMainWnd())->m_ppereutiDlg = NULL;

//CEdit *pEdit = (CEdit *)(((CMenuDlg *)AfxGetMainWnd())->GetDlgItem(IDC_EDIT1));

// Уничтожаем дочернее окно

//DestroyWindow();

}

void Zamenit::OnBnClickedCancel()//Выход---------------------------------

{

OnCancel();

// Сбрасываем указатель на дочернее окно в родительском окне

((CMenuDlg *)m_pParentz)->m_zamenitDlg = NULL;

//((CMenuDlg *)AfxGetMainWnd())->m_ppereutiDlg = NULL;

// Уничтожаем дочернее окно

DestroyWindow();}

Код модуля pereuty.cpp

// pereuti.cpp : implementation file

//

#include "stdafx.h"

#include "Menu.h"

#include "pereuti.h"

// pereuti dialog

IMPLEMENT_DYNAMIC(pereuti, CDialog)

pereuti::pereuti(CWnd* pParent /*=NULL*/)

: CDialog(pereuti::IDD, pParent)

, m_position(0)

{

}

pereuti::~pereuti()

{

}

void pereuti::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT1, m_position);

DDX_Control(pDX, IDC_EDIT1, m_edit_pereuti);

}

BEGIN_MESSAGE_MAP(pereuti, CDialog)

END_MESSAGE_MAP()

// pereuti message handlers

Код модуля MenuDlg.cpp(Основной)

// MenuDlg.cpp : implementation file **********************************************************************************

// Kamenev Alexej 40 01 02

// 417318 / 10

// MIDO BNTU

// Created by Keylo99er

//

//*********************************************************************************************************************

#include "stdafx.h"

#include "Menu.h"

#include "MenuDlg.h"

#include ".\menudlg.h"

#include "mein.h"

#include "m_nauti.h"

#include "Zamenit.h"

#include "pereuti.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

#define WM_TRAYICON (WM_APP + 1)

// CMenuDlg dialog

CMenuDlg::CMenuDlg(CWnd* pParent /*=NULL*/)

: CDialog(CMenuDlg::IDD, pParent)

, m_pAddDlg(NULL)

, m_zamenitDlg(NULL)

, m_nTimer(0)

, m_uTimer(0)

, m_bFlag(false)

, m_bFlMenu(false)

, m_strPath(_T("Безымянный"))

, m_strFileName(_T("*.txt"))

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CMenuDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_EDIT1, m_Edit1);

}

BEGIN_MESSAGE_MAP(CMenuDlg, CDialog)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_COMMAND(ID_Sozdat, OnSozdat)

ON_COMMAND(ID_Wixod, OnWixod)

ON_COMMAND(ID_Otkrit, OnOtkrit)

ON_COMMAND(ID_Soxranit, OnSoxranit)

ON_COMMAND(ID_Soxranit_kak, OnSoxranitkak)

ON_COMMAND(ID_Wremja, OnWremja)

ON_COMMAND(ID_Widelit_wse, OnWidelitwse)

ON_COMMAND(ID_Shrift, OnShrift)

ON_WM_SIZE()

ON_COMMAND(ID_blokn, Onblokn)

ON_COMMAND(ID_Udalit, OnUdalit)

ON_COMMAND(ID_Wirezat, OnWirezat)

ON_COMMAND(ID_Kopirowat, OnKopirowat)

ON_COMMAND(ID_Wstawit, OnWstawit)

ON_COMMAND(ID_Otmenit, OnOtmenit)

ON_EN_CHANGE(IDC_EDIT1, OnEnChangeEdit1)

ON_WM_INITMENU()

ON_WM_CLOSE()

ON_COMMAND(ID_Sprawka_2, OnSprawka2)

ON_COMMAND(ID_Nauti, OnNauti)

ON_COMMAND(ID_Nauti_dalee, OnNautidalee)

ON_COMMAND(ID_Zamenit, OnZamenit)

ON_COMMAND(ID_T_, OnT)

ON_WM_TIMER()

ON_COMMAND(ID_TRAY_OPEN, OnTrayOpen)

ON_COMMAND(ID_TRAY_EXIT, OnTrayExit)

ON_MESSAGE(WM_TRAYICON, OnTrayIcon)

ON_COMMAND(ID_Trei, OnTrei)

ON_COMMAND(ID_Pereuti, OnPereuti)

ON_WM_INITMENUPOPUP()

END_MESSAGE_MAP()

// CMenuDlg message handlers

BOOL CMenuDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE);// Set big icon

SetIcon(m_hIcon, FALSE);// Set small icon

// TODO: Add extra initialization here

// SetTimer(1,500,0);

//--------------------------------------------------

CRect rcClient;

GetClientRect(rcClient);

rcClient.InflateRect(-2, -2, -2, -20);

GetDlgItem(IDC_EDIT1)->MoveWindow(rcClient);

//------------------------------------------------

//Акселератор

m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));

//----------------------------------------------------

// Инициализируем шрифт текста

CFont *pFontText = m_Edit1.GetFont();

LOGFONT lfText;

pFontText->GetLogFont(&lfText);

m_fontText.CreateFontIndirect(&lfText);

//m_editMain.m_menuPopup.LoadMenu(IDR_MENU_POPUP);

//----------------------------------------------------

//StatusBar

m_wndStatusBar.Create(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP,

CRect(0, 0, 0, 0), this, IDC_STATUS_BAR);

CRect rect;

m_wndStatusBar.GetClientRect(&rect);

int nParts[] = {rect.right - 200, - 1};

CString strPartsStatusBar;

strPartsStatusBar.Format(_T("Стр %d, стлб %d"), m_nStrStatusBar = 1, m_nStolbetsStatusBar= 1);

m_wndStatusBar.SetParts(sizeof(nParts)/sizeof(nParts[0]), nParts);

m_wndStatusBar.SetText(strPartsStatusBar, 1, 0);

m_nTimer = SetTimer(1, 100, NULL);

m_wndStatusBar.ShowWindow(SW_SHOW);

//-------------------------------------------------------

//tray

m_menuTray.LoadMenu(IDR_MENU2);

m_nidTray.cbSize = sizeof(NOTIFYICONDATA);

m_nidTray.hWnd = m_hWnd;

m_nidTray.uID = ID_TRAYICON;

m_nidTray.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;

m_nidTray.hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

m_nidTray.uCallbackMessage = WM_TRAYICON;

_tcscpy(m_nidTray.szTip, _T("Блокнот Лехи Каменева"));

//--------------------------------------------------------

CMenu* MENU = GetMenu();

CMenu* sibmenu = MENU->GetSubMenu(1);

sibmenu->EnableMenuItem(ID_Otmenit, MF_BYCOMMAND | MF_GRAYED);

CMenu* MENU1 = GetMenu();

CMenu* submenu = MENU1->GetSubMenu(1);

submenu->EnableMenuItem(ID_Wirezat, MF_BYCOMMAND | MF_GRAYED);

CMenu* MENU2 = GetMenu();

CMenu* sebmenu = MENU2->GetSubMenu(1);

sebmenu->EnableMenuItem(ID_Kopirowat, MF_BYCOMMAND | MF_GRAYED);

CMenu* MENU3 = GetMenu();

CMenu* sobmenu = MENU3->GetSubMenu(1);

sobmenu->EnableMenuItem(ID_Udalit, MF_BYCOMMAND | MF_GRAYED);

//----------------------------------------------------------------

m_pAddDlg = NULL;

return TRUE; // return TRUE unless you set the focus to a control

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CMenuDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this function to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CMenuDlg::OnQueryDragIcon()

{

return static_cast<HCURSOR>(m_hIcon);

}

void CMenuDlg::OnSozdat()//Создать ------------------------------

{

CString str_77 , strText;

CString str_r;

m_Edit1.GetWindowText(str_r);

if (str_r == _T(""))

{

//Beep(1000,100);

}

else if (str_r != _T(""))

{

UINT uRes = MessageBox(_T("Текст в файле Безымянный был изменньон \n\n Сохранить изменение?"),

_T("Блокнот(Alexa)"), MB_YESNOCANCEL | MB_ICONWARNING);

if (uRes == IDYES)

{

CFileDialog fileDlg(FALSE,_T(".txt"),NULL,NULL,"Text Files(*.txt) |*.txt|",NULL);

if(fileDlg.DoModal() == IDOK)

{

CStdioFile f;

if(!f.Open(fileDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite))

{

MessageBox("Не могу сохранить файл");

return;

}

/*while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}*/

CString str;

m_Edit1.GetWindowText(str);

f.Write(str, str.GetLength());

f.Close();

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот(Alexa)"));

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->SetSel(0,-1);

mEdit->Clear();

//m_strPath = _T("Безымянный");

SetWindowText(_T("Безымянный-Блокнот(Alexa)"));

}

}

if (uRes == IDNO)

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->SetSel(0,-1);

mEdit->Clear();

//m_strPath = _T("Безымянный");

SetWindowText(_T("Безымянный-Блокнот(Alexa)"));

}

}

}

BOOL CMenuDlg::PreTranslateMessage(MSG* pMsg)

{

if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)

return ::TranslateAccelerator(m_hWnd, m_hAccel, pMsg);

return CDialog::PreTranslateMessage(pMsg);

}

void CMenuDlg::OnWixod()//Выход--------------------------------------------

{CString str_77, strText;

CString str_r;

CStdioFile f;

m_Edit1.GetWindowText(str_r);

if (str_r == _T(""))

{

EndDialog(0);

return;

}

else if (str_r != _T(""))

{

UINT uRes = MessageBox(_T("Текст в файле Безымянный был изменньон \n\n Сохранить изменение?"),

_T("Блокнот"), MB_YESNOCANCEL | MB_ICONWARNING);

if (uRes == IDYES)

{

//CString path;

CFileDialog fileDlg(FALSE,_T(".txt"),NULL,NULL,"Text Files(*.txt) |*.txt|",NULL);

if(fileDlg.DoModal() == IDOK)

{

//path = fdlg.GetPathName();

//CFile f;

if(!f.Open(fileDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite))

{

MessageBox("Не могу сохранить файл");

return;

}

while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот"));

}

}

if (uRes == IDNO)

{

EndDialog(0);

//CDialog::OnClose();

}

if (uRes == IDCANCEL)

{

}

}

}

void CMenuDlg::OnOtkrit()//Открыть----------------------------------------

{

CString str_77 , strText;

CStdioFile f;

CString str_r;

m_Edit1.GetWindowText(str_r);

if (str_r == _T(""))

{

CFileDialog fileDlg(TRUE, _T(".txt"), NULL,

OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST,

_T("All Files (*.*) |*.*| Text Files(*.txt) | *.txt| Word Files(*.doc) |*.doc|"));

if (fileDlg.DoModal() == IDOK)

{

if (!f.Open(fileDlg.GetPathName(), CFile::modeRead | CFile::typeText))

{

MessageBox("Не могу открыть файл");

return;

}

while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}

/*CString str;

m_Edit1.GetWindowText(str);

f.Write(str, str.GetLength());

f.Close();*/

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот"));

}

}

else if (str_r != _T(""))

{

UINT uRes = MessageBox(_T("Текст в файле Безымянный был изменньон \n\n Сохранить изменение?"),

_T("Блокнот"), MB_YESNOCANCEL | MB_ICONWARNING);

if (uRes == IDYES)

{

//CString path;

CFileDialog fileDlg(FALSE,_T(".txt"),NULL,NULL,"Text Files(*.txt) |*.txt|",NULL);

if(fileDlg.DoModal() == IDOK)

{

//path = fdlg.GetPathName();

//CFile f;

if(!f.Open(fileDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite))

{

MessageBox("Не могу сохранить файл");

return;

}

while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот"));

}

CFileDialog fileDlg1(TRUE, _T(".txt"), NULL,

OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST,

_T("All Files (*.*) |*.*| Text Files(*.txt) | *.txt| Word Files(*.doc) |*.doc|"));

if (fileDlg1.DoModal() == IDOK)

{

if (!f.Open(fileDlg1.GetPathName(), CFile::modeRead | CFile::typeText))

{

MessageBox("Не могу открыть файл");

return;

}

while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg1.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот"));

}

}

if (uRes == IDNO)

{

CFileDialog fileDlg(TRUE, _T(".txt"), NULL,

OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST,

_T("All Files (*.*) |*.*| Text Files(*.txt) | *.txt| Word Files(*.doc) |*.doc|"));

if (fileDlg.DoModal() == IDOK)

{

if (!f.Open(fileDlg.GetPathName(), CFile::modeRead | CFile::typeText))

{

MessageBox("Не могу открыть файл");

return;

}

while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот"));

}

}

}

}

void CMenuDlg::OnSoxranit()//Сохранить-------------------------------

{

if (m_strPath == _T("Безымянный") )

OnSoxranitkak();

else

{

CStdioFile file;

if (!file.Open(m_strFileName

, CFile::modeCreate | CFile::modeWrite | CFile::typeText))

{

AfxMessageBox(_T("Не могу открыть файл."));

return;

}

CEdit *pEditor = (CEdit *)GetDlgItem(IDC_EDIT1);

int nLines = pEditor->GetLineCount();

CString str;

for (int i = 0; i < nLines; i++)

{

int nLen = pEditor->LineLength(pEditor->LineIndex(i));

pEditor->GetLine(i, str.GetBuffer(nLen), nLen);

str.ReleaseBuffer(nLen);

if (i > 0)

str = _T("\n") + str;

file.WriteString(str);

}

}

}

void CMenuDlg::OnSoxranitkak()//Сохранить как------------------------

{

CString str_77, strText;

CFileDialog fileDlg(FALSE,_T(".txt"),NULL,NULL,"Text Files(*.txt) | *.txt|",NULL);

if(fileDlg.DoModal() == IDOK)

{

//path = fileDlg.GetPathName();

CStdioFile f;

if(!f.Open(fileDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite))

{

MessageBox("Не могу сохранить файл");

return;

}

/*while (f.ReadString(str_77))

{

if (!strText.IsEmpty())

strText += "\r\n";

strText += str_77;

}

SetDlgItemText(IDC_EDIT1, strText);

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T("-Блокнот(Alexa)"));*/

CEdit *pEditor = (CEdit *)GetDlgItem(IDC_EDIT1);

int nLines = pEditor->GetLineCount();

CString str;

for (int i = 0; i < nLines; i++)

{

int nLen = pEditor->LineLength(pEditor->LineIndex(i));

pEditor->GetLine(i, str.GetBuffer(nLen), nLen);

str.ReleaseBuffer(nLen);

if (i > 0)

str = _T("\n") + str;

f.WriteString(str);

}

m_strPath = fileDlg.GetPathName();

m_strFileName = f.GetFileName();

SetWindowText(m_strFileName + _T(" - Блокнот"));

}

}

void CMenuDlg::OnWremja()//Время---------------------------------------

{

CEdit *pmyEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

CString str, str2, str3;

int nashalo, konec;

CTime time = CTime::GetCurrentTime();

UpdateData();

str = time.Format(_T("%H:%M %d.%m.%Y"));

pmyEdit->GetSel(nashalo, konec);

GetDlgItemText(IDC_EDIT1, str3);

str3.Insert(konec, str);

SetDlgItemText(IDC_EDIT1, str3);

pmyEdit->SetSel(nashalo + 17, konec + 17);

}

void CMenuDlg::OnWidelitwse()//Выделить все---------------------------

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->SetSel(0,-1);

mEdit->SetFocus();

}

void CMenuDlg::OnShrift() //Шрифт-----------------------------------------------

{

LOGFONT lfText;

m_fontText.GetLogFont(&lfText);

CFontDialog fontDlg(&lfText);

if (fontDlg.DoModal())

{fontDlg.GetCurrentFont(&lfText);

m_fontText.DeleteObject();

m_fontText.CreateFontIndirect(&lfText);

m_Edit1.SetFont(&m_fontText);}

}

void CMenuDlg::OnSize(UINT nType, int cx, int cy)

{

CDialog::OnSize(nType, cx, cy);

if (IsWindow(m_wndStatusBar.m_hWnd))

{

m_wndStatusBar.MoveWindow(0, 0, 0, 0);

CRect rect;

m_wndStatusBar.GetClientRect(&rect);

int nParts[] = {rect.right - 200, - 1};

m_wndStatusBar.SetParts(sizeof(nParts)/sizeof(nParts[0]), nParts);

CString strPartsStatusBar;

strPartsStatusBar.Format(_T("Строка %d, столбец %d"), m_nStrStatusBar, m_nStolbetsStatusBar);

}

CWnd *pEdit = GetDlgItem(IDC_EDIT1);

if (pEdit != NULL)

{

CRect rcClient;

GetClientRect(rcClient);

rcClient.InflateRect(-2, -2, -2, -20);

pEdit->MoveWindow(rcClient);

if(IsWindow(m_Edit1.m_hWnd))

{

m_wndStatusBar.MoveWindow(0, 0, 0, 0);

CRect clientRect1;

CRect clientRStatusBar1;

GetClientRect(clientRect1);

m_wndStatusBar.GetClientRect(clientRStatusBar1);

CRect cx = clientRect1;

cx.bottom = clientRect1.bottom - clientRStatusBar1.Height();

m_Edit1.MoveWindow(cx);

}

CMenu* pMenu = GetMenu()->GetSubMenu(3);

UINT state = pMenu->GetMenuState(1, MF_BYPOSITION);

if (nType == SIZE_MINIMIZED && state & MF_CHECKED)

{

ShowWindow(SW_HIDE);

Shell_NotifyIcon(NIM_ADD, &m_nidTray);

//m_uTimer = SetTimer(1, 500, NULL);

nIcon = 0;

}/*

static UINT rgIconID[] =

{

IDI_ICON1, IDI_ICON2, IDI_ICON3, IDI_ICON4

};

nIcon++;

if (nIcon == 4) nIcon = 0;

m_nidTray.hIcon = AfxGetApp()->LoadIcon(rgIconID[nIcon]);

Shell_NotifyIcon(NIM_MODIFY, &m_nidTray);

*/

}

}

void CMenuDlg::Onblokn()//Модальное окно О блокноте---------------

{

mein dlg;

if (dlg.DoModal() == IDOK)

{

Beep(1500,300);

}

}

void CMenuDlg::OnUdalit()//Удалить---------------------------------------

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->Clear();

mEdit->SetFocus();

}

void CMenuDlg::OnWirezat()//Вырезать-----------------------------------

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->Cut();

mEdit->SetFocus();

}

void CMenuDlg::OnKopirowat()//Копировать--------------------------------

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->Copy();

mEdit->SetFocus();

}

void CMenuDlg::OnWstawit()//Вставить-------------------------------------

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->Paste();

mEdit->SetFocus();

}

Void CMenuDlg::OnOtmenit()//Отменить----------------------------------

{

CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

mEdit->Undo();

mEdit->SetFocus();

}

void CMenuDlg::OnEnChangeEdit1()//Едит------------------------------

{

//CEdit *mEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

//mEdit->SetSel(0, 0);

CString str_4;

m_Edit1.GetWindowText(str_4);

if (str_4 != _T(""))

{

CMenu* MENU = GetMenu();

CMenu* sibmenu = MENU->GetSubMenu(1);

sibmenu->EnableMenuItem(ID_Otmenit, MF_BYCOMMAND | MF_ENABLED );

}

/*else if(str_4 ==_T(""))

{

CMenu* MENU = GetMenu();

CMenu* sibmenu = MENU->GetSubMenu(1);

sibmenu->EnableMenuItem(ID_Otmenit, MF_BYCOMMAND | MF_GRAYED);

}*/

/*

CString str_5;

m_Edit1.GetWindowText(str_5);

if (str_5 != _T(""))

{

CMenu* MENU2 = GetMenu();

CMenu* sebmenu = MENU2->GetSubMenu(1);

sebmenu->EnableMenuItem(ID_Wirezat, MF_BYCOMMAND | MF_ENABLED );

}

else if(str_5 ==_T(""))

{

CMenu* MENU2 = GetMenu();

CMenu* sebmenu = MENU2->GetSubMenu(1);

sebmenu->EnableMenuItem(ID_Wirezat, MF_BYCOMMAND | MF_GRAYED);

}

CString str_6;

m_Edit1.GetWindowText(str_6);

if (str_6 != _T(""))

{

CMenu* MENU2 = GetMenu();

CMenu* sebmenu = MENU2->GetSubMenu(1);

sebmenu->EnableMenuItem(ID_Udalit, MF_BYCOMMAND | MF_ENABLED );

}

else if(str_5 ==_T(""))

{

CMenu* MENU2 = GetMenu();

CMenu* sebmenu = MENU2->GetSubMenu(1);

sebmenu->EnableMenuItem(ID_Udalit, MF_BYCOMMAND | MF_GRAYED);

}*/

}

void CMenuDlg::OnInitMenu(CMenu* pMenu)

{

CDialog::OnInitMenu(pMenu);

}

void CMenuDlg::OnClose()//Закрытие-------------------------------------

{

CString str_r;

m_Edit1.GetWindowText(str_r);

if (str_r == _T(""))

{

EndDialog(0);

return;

}

else if (str_r != _T(""))

{

UINT uRes = MessageBox(_T("Текст в файле Безымянный был изменньон \n\n Сохранить изменение?"),

_T("Блокнот"), MB_YESNOCANCEL | MB_ICONWARNING);

if (uRes == IDYES)

{

CString path;

CFileDialog fdlg(FALSE,_T(".txt"),NULL,NULL,"Text Files(*.txt) |*.txt|",NULL);

if(fdlg.DoModal() == IDOK)

{

path = fdlg.GetPathName();

CFile f;

if(!f.Open(path, CFile::modeCreate | CFile::modeWrite))

{

MessageBox("Не могу сохранить файл");

return;

}

CString str;

m_Edit1.GetWindowText(str);

f.Write(str, str.GetLength());

f.Close();

}

}

if (uRes == IDNO)

{

CDialog::OnClose();

}

if (uRes == IDCANCEL)

{}

}

KillTimer(m_uTimer);

KillTimer(m_nTimer);

//CDialog::OnClose();

}

void CMenuDlg::OnSprawka2()//Вызов справки----------------------------

{

MessageBox(_T("Самопал от Лехи ") ,

_T("Блокнот"), MB_OK | MB_ICONINFORMATION);

}

void CMenuDlg::OnNauti()//Найти-------------------------------------------------

{

if (!m_pAddDlg)

{

m_pAddDlg = new m_nauti (this);

m_pAddDlg->Create(IDD_M_NAUTI);

}

m_pAddDlg->ShowWindow(SW_SHOW);

m_pAddDlg->SetForegroundWindow();

m_Find = TRUE;

}

void CMenuDlg::OnNautidalee()//Найти далее-------------------------------

{

OnNauti();

/*if (!m_Find)

OnEditMfind();

else

m_nauti->OnNauti();*/

}

void CMenuDlg::OnZamenit()//Заменить--------------------------------------

{

CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

pEdit->SetSel(0, 0);

if (!m_zamenitDlg)

{

// Создаем объект дочернего окна

m_zamenitDlg = new Zamenit (this);

// Создаем дочернее окно

m_zamenitDlg->Create(IDD_ZAMENIT);

}

// Показываем дочернее окно

m_zamenitDlg->ShowWindow(SW_SHOW);

m_zamenitDlg->SetForegroundWindow();

//Zamenit dlg;

//if (dlg.DoModal() == IDCANCEL)

//{

////Beep(1500,300);

//}

}

void CMenuDlg::OnT()//строка состояние-------------------------------------

{

CMenu* pMenu = GetMenu()->GetSubMenu(3);

CWnd *pEdit = GetDlgItem(IDC_EDIT1);

CRect rcEditSize;

UINT state = pMenu->GetMenuState(0, MF_BYPOSITION);

if (state & MF_CHECKED)

{

//Beep(100,100);

/*Beep(200,100);Beep(300,100);Beep(400,100);Beep(500,100);Beep(600,100);

Beep(700,100);Beep(800,100);Beep(900,100);Beep(1000,100);Beep(1100,100);

Beep(1200,100);Beep(1300,100);Beep(1400,100);Beep(1500,100);Beep(1600,100);

Beep(1700,100);Beep(1800,100);Beep(1900,100);Beep(2000,100);Beep(2100,100);

Beep(2500,500);Beep(1900,100);Beep(1800,100);Beep(1700,100);Beep(1600,100);

Beep(1500,100);Beep(1400,100);Beep(1300,100);Beep(1200,100);Beep(1100,100);

Beep(1000,100);Beep(900,100);Beep(800,100);Beep(700,100);Beep(600,100);

Beep(500,100);Beep(400,100);Beep(300,100);Beep(200,100);Beep(100,500);*/

pMenu->CheckMenuItem(0, MF_UNCHECKED | MF_BYPOSITION);

m_wndStatusBar.ShowWindow(SW_HIDE);

GetClientRect(rcEditSize);

rcEditSize.InflateRect(-2, -2);

pEdit->MoveWindow(rcEditSize);

m_bFlMenu = FALSE;

}

else

{

pMenu->CheckMenuItem(0, MF_CHECKED | MF_BYPOSITION);

m_wndStatusBar.ShowWindow(SW_SHOW);

GetClientRect(rcEditSize);

rcEditSize.InflateRect(-2, -2, -2, -20);

pEdit->MoveWindow(rcEditSize);

m_bFlMenu = TRUE;

}

}

void CMenuDlg::OnTimer(UINT nIDEvent)//Он таймер-------------------

{

CString strPartsStatusBar;

CEdit *pmyEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

int nStart, nEnd;

pmyEdit->GetSel(nStart, nEnd);

m_nStrStatusBar = pmyEdit->LineFromChar(nStart);

m_nStolbetsStatusBar = nEnd - pmyEdit->LineIndex(m_nStrStatusBar);

strPartsStatusBar.Format(_T("Стр %d, стлб %d"), m_nStrStatusBar + 1, m_nStolbetsStatusBar + 1);

m_wndStatusBar.SetText(strPartsStatusBar, 1, 0);

//m_wndStatusBar.ShowWindow(SW_SHOW);

CDialog::OnTimer(nIDEvent);

}

LRESULT CMenuDlg::OnTrayIcon(WPARAM wParam, LPARAM lParam)//Трай-----------------------

{

if (wParam != ID_TRAYICON || (lParam != WM_LBUTTONUP && lParam != WM_RBUTTONUP))

return 0L;

if (lParam == WM_LBUTTONUP)

{

OnTrayOpen();

}

else if (lParam == WM_RBUTTONUP)

{

CPoint pt;

GetCursorPos(&pt);

CMenu *pTrayMenu = m_menuTray.GetSubMenu(0);

// Исправляем баг с контекстным меню (см. MSDN Knowledge Base: 135788)

SetForegroundWindow();

pTrayMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);

// Исправляем баг с контекстным меню (см. MSDN Knowledge Base: 135788)

PostMessage(WM_NULL, 0, 0);

}

return 0;

}

void CMenuDlg::OnTrayOpen()

{

ShowWindow(SW_RESTORE);

SetForegroundWindow();

Shell_NotifyIcon(NIM_DELETE, &m_nidTray);

}

void CMenuDlg::OnTrayExit()

{

Shell_NotifyIcon(NIM_DELETE, &m_nidTray);

EndDialog(0);

}

void CMenuDlg::OnTrei()

{

CMenu* pMenu = GetMenu()->GetSubMenu(3);

UINT state = pMenu->GetMenuState(1, MF_BYPOSITION);

if (state == MF_CHECKED)

{

pMenu->CheckMenuItem(1, MF_UNCHECKED | MF_BYPOSITION);

}

else

{

pMenu->CheckMenuItem(1, MF_CHECKED | MF_BYPOSITION);

}

}

void CMenuDlg::OnPereuti()//перейти-----------------------------------------

{

/*

pereuti move;

CString str,str1;

int index;

int lines;

//DWORD word;

lines = m_Edit1.GetLineCount();

str1 = _T("Столько строк нет!!! их всего: ");

str.Format(_T("%d"),lines);

str1 += str;

//word = m_Edit.GetSel();

index = m_Edit1.LineFromChar()+1;

//index = m_Edit1.GetLineCount();

move.m_position = index;

//move.Goto_Edit.SetSel(0, -1);

if(move.DoModal() == IDOK)

{

//move.m_edit_pereuti.SetSel(0, -1);

if(lines < m_Edit1.LineIndex(move.m_position+10))

AfxMessageBox(str1);

else

m_Edit1.SetSel(m_Edit1.LineIndex(move.m_position-1),

m_Edit1.LineIndex(move.m_position-1));

}*/

pereuti move;

CString str,str1;

int index;

int lines;

lines = m_Edit1.GetLineCount();

str1 = _T("Столько строк нет!!! их всего: ");

str.Format(_T("%d"),lines);

str1 += str;

index = m_Edit1.LineFromChar() + 1;

move.m_position = index;

if(move.DoModal() == IDOK)

{

//move.m_edit_pereuti.SetSel(0, -1);

if(index >= m_Edit1.LineIndex(move.m_position-1))

AfxMessageBox(str1);

else

m_Edit1.SetSel(m_Edit1.LineIndex(move.m_position-1),

m_Edit1.LineIndex(move.m_position-1));

}

}

void CMenuDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)

{

CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);

CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT1);

int nFerstChar, nSecondChar;

CString strEdit;

pEdit->GetSel(nFerstChar, nSecondChar);

pEdit->GetWindowText(strEdit);

UINT format = CF_TEXT;

BOOL bClipboard = IsClipboardFormatAvailable(format);

//pPopupMenu->EnableMenuItem(ID_Otmenit,

//MF_BYCOMMAND | (bClipboard == FALSE ? MF_GRAYED : MF_ENABLED));

//pPopupMenu->EnableMenuItem(ID_Otmenit,

//MF_BYCOMMAND | (m_bFlag == FALSE ? MF_GRAYED : MF_ENABLED));

pPopupMenu->EnableMenuItem(ID_Wirezat,

MF_BYCOMMAND | (nFerstChar == nSecondChar ? MF_GRAYED : MF_ENABLED));

pPopupMenu->EnableMenuItem(ID_Kopirowat,

MF_BYCOMMAND | (nFerstChar == nSecondChar ? MF_GRAYED : MF_ENABLED));

pPopupMenu->EnableMenuItem(ID_Udalit,

MF_BYCOMMAND | (nFerstChar == nSecondChar ? MF_GRAYED : MF_ENABLED));

pPopupMenu->EnableMenuItem(ID_Nauti,

MF_BYCOMMAND | (strEdit == _T("") ? MF_GRAYED : MF_ENABLED));

pPopupMenu->EnableMenuItem(ID_Zamenit,

MF_BYCOMMAND | (strEdit == _T("") ? MF_GRAYED : MF_ENABLED));

pPopupMenu->EnableMenuItem(ID_Nauti_dalee,

MF_BYCOMMAND | (strEdit == _T("") ? MF_GRAYED : MF_ENABLED));

}


Информация о работе «Проект текстового редактора»
Раздел: Информатика, программирование
Количество знаков с пробелами: 39677
Количество таблиц: 0
Количество изображений: 4

Похожие работы

Скачать
46336
0
0

... одновременно открывать несколько файлов и быстро переключаться между ними, щелкая по ярлычкам.     5. Практическая часть работы Требовалось создать сайт с одноименным названием курсовой работы, а именно «Сравнительный анализ современных текстовых редакторов». Сайт создан с целью доведения информации о текстовых редакторах до всех желающих. Структура папок для хранения структуры сайта ...

Скачать
53631
0
0

... себя от случайного внесения изменений в файл во время сеанса редактирования. Чтобы воспользоваться опцией "только чтение", вызовите редактор следующим образом: view file<CR>   21.Другие текстовые редакторы Unix 21.1. Редактор ED. Редактор текстов ed является диалоговой (интерактивной) программой, которая позволяет добавлять, перемещать, удалять текст и извлекать его из ...

Скачать
30700
1
3

... файл. hlp – файл справки, который при необходимости, можно сделать встроенным. Все файлы должны лежать в одной папке и запускаться оттуда. Руководство пользователя Данная программа представляет собой текстовый редактор, предназначенный для набора, редактирования и форматирования текста. Сначала необходимо скопировать все файлы, входящие в программный пакет на жесткий диск (все файлы должны ...

Скачать
20668
0
5

... или заголовками для удобства работы. Меню Помощь содержит информацию о программе. 5. ЗАКЛЮЧЕНИЕ В ходе выполнения курсовой работы предоставленная программа была выполнена и работала. Конечно это простой текстовый редактор и у него мало функций по сравнению с MS WORD. Он чем-то похож на простой блокнот. Единственное его отличие что он был написан на языке С++. Язык С++ работал без ...

0 комментариев


Наверх