СОДЕРЖАНИЕ
Постановка задачи
Краткие теоретические сведения
Результаты выполнения программы
Заключение
Литература
Листинг программы
ПОСТАНОВКАЗАДАЧИ
Составить Win32 App проект простейший текстовый редактор, которыйпозволяет выполнять операции редактирование текста, копирование и вставку изодного окна проекта в другое окно проекта. Использовать вызов диалоговсохранения и открытия файла, а также диалог выбора шрифта. Все диалогиприменяются к тексту в редакторе.
КРАТКИЕТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Работа с функциями вызовастандартных диалогов производится следующим образом:
1. Объявляются переменныесоответствующих структур:
static COLORREF textColor;
// Переменные длястандартных диалогов «Open»,«Save as»
static OPENFILENAME ofn;
static char szFile[MAX_PATH];
// Переменные длястандартного диалога «Color»
staticCHOOSECOLOR cc; // common dialog box structure
staticCOLORREF acrCustClr[16]; // array of custom colors
// Переменные длястандартного диалога «Font»
staticCHOOSEFONT chf;
static HFONThFont;
static LOGFONT lf;
2. Инициализируютсясоответствующие структуры в обработчике события создания окна (окна диалога).
switch (uMsg)
{
caseWM_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. Вызываетсясоответствующая функция в обработчике событий нажатия кнопки вызовасоответствующего диалога.
caseWM_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;
caseIDM_SAVE_AS:
strcpy(szFile,"");
success = GetSaveFileName(&ofn);
if (success)
MessageBox(hWnd,ofn.lpstrFile,
«Файл сохраняется с именем:», MB_OK);
else
MessageBox(hWnd,ESC_OF«GetSaveFileName»,
«Отказ от выбора илиошибка», MB_ICONWARNING);
break;
caseIDM_BKGR_COLOR:
if (ChooseColor(&cc))
SetClassLong(hWnd,GCL_HBRBACKGROUND,
(LONG)CreateSolidBrush(cc.rgbResult));
break;
caseIDM_TEXT_COLOR:
if (ChooseColor(&cc))textColor = cc.rgbResult;
break;
caseIDM_CHOOSE_FONT:
if(ChooseFont(&chf))hFont = CreateFontIndirect(chf.lpLogFont);
break;
РЕЗУЛЬТАТЫВЫПОЛНЕНИЯ ПРОГРАММЫ
/>
/>
/>
/>
ЗАКЛЮЧЕНИЕ
Впроцессе разработки программы использовался в большом объеме теоретическийматериал ВУЗа и материал по программированию из учебников, вспомогательныхэлектронных средств и средств Интернета, что способствовало закреплениюнаработанных навыков и умений в этих интересных областях знаний.
Полноетестирование программы показало что, программа реализована в полном объеме всоответствии с заданными требованиями и поставленной задачей. Полностьюотлажена и проработана. Поставленная задача выполнена.
Программапостроена на классе MFC для Win32 приложений.
ЛИТЕРАТУРА
1. Д.Рихтер Созданиеэффективных Win32 приложений.
2. П. В. РумянцевАзбука программирования в WIN 32API.
3. Ч. Петзолд.Программирование для Windows95. Том 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()
{
}
voidmein::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(mein,CDialog)
END_MESSAGE_MAP()
// meinmessage handlers
Кодмодуляmenu.cpp
// Menu.cpp:Defines the class behaviors for the application.
//
#include«stdafx.h»
#include«Menu.h»
#include«MenuDlg.h»
#ifdef _DEBUG
#define newDEBUG_NEW
#endif
// CMenuApp
BEGIN_MESSAGE_MAP(CMenuApp,CWinApp)
ON_COMMAND(ID_HELP,CWinApp::OnHelp)
END_MESSAGE_MAP()
// CMenuAppconstruction
CMenuApp::CMenuApp()
{
// TODO: addconstruction code here,
// Place allsignificant initialization in InitInstance
}
// The one andonly CMenuApp object
CMenuApptheApp;
// CMenuAppinitialization
BOOLCMenuApp::InitInstance()
{
//InitCommonControls() is required on Windows XP if an application
// manifestspecifies use of ComCtl32.dll version 6 or later to enable
// visualstyles. Otherwise, any window creation will fail.
InitCommonControls();
CWinApp::InitInstance();
// Standardinitialization
// If you arenot using these features and wish to reduce the size
// of yourfinal executable, you should remove from the following
// thespecific initialization routines you do not need
// Change theregistry key under which our settings are stored
// TODO: Youshould modify this string to be something appropriate
// such as thename of your company or organization
SetRegistryKey(_T(«LocalAppWizard-Generated Applications»));
CMenuDlg dlg;
m_pMainWnd =&dlg;
INT_PTRnResponse = dlg.DoModal();
if (nResponse== IDOK)
{
// TODO: Placecode here to handle when the dialog is
// dismissedwith OK
}
else if(nResponse == IDCANCEL)
{
// TODO: Placecode here to handle when the dialog is
// dismissedwith Cancel
}
// Since thedialog 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
usingnamespace std;
// m_nautidialog
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()
{
}
voidm_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()
BOOLm_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_nautimessage handlers
voidm_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);
}
}
voidm_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();
}
}
voidm_nauti::OnBnClickedButton1()//Найти далее---------------------------
{
CButton*pBtnFind = (CButton *)GetDlgItem(IDC_BUTTON1);
// Получаем доступк полям ввода
CEdit *pEdit =(CEdit *)((CMenuDlg *)m_pParent)->GetDlgItem(IDC_EDIT1);
CEdit *pFind =(CEdit *)GetDlgItem(IDC_EDIT11);
CStringstrFind;
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 constbasic_string ::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();
}
voidm_nauti::OnBnClickedCancel()//Выход------------------------------
{
OnCancel();
// Сбрасываем указательна дочернее окно в родительском окне
((CMenuDlg*)m_pParent)->m_pAddDlg = NULL;
// Уничтожаем дочернее окно
DestroyWindow();
}
voidm_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»
// Zamenitdialog
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;
}
voidZamenit::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()
// Zamenitmessage handlers
voidZamenit::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;
}
voidZamenit::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);
CStringstrSours;
pSours->GetWindowText(strSours);
pEdit->ReplaceSel(strSours);
OnBnClickedButton1();
}
}
voidZamenit::OnEnChangeEdit22()
{
CStringstrFind1;
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);
}
}
voidZamenit::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);
// Получаем текст изполей ввода
//CStringstrText, 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;
}
voidZamenit::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();
}
voidZamenit::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»
// pereutidialog
IMPLEMENT_DYNAMIC(pereuti,CDialog)
pereuti::pereuti(CWnd*pParent /*=NULL*/)
:CDialog(pereuti::IDD, pParent)
,m_position(0)
{
}
pereuti::~pereuti()
{
}
voidpereuti::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()
// pereutimessage handlers
Код модуля MenuDlg.cpp(Основной)
// MenuDlg.cpp: implementation file**********************************************************************************
// KamenevAlexej 40 01 02
// 417318 / 10
// MIDO BNTU
// Created byKeylo99er
//
//*********************************************************************************************************************
#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
#defineWM_TRAYICON (WM_APP + 1)
// CMenuDlgdialog
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);
}
voidCMenuDlg::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()
// CMenuDlgmessage handlers
BOOLCMenuDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set theicon for this dialog. The framework does this automatically
// when theapplication's main window is not a dialog
SetIcon(m_hIcon,TRUE);// Set big icon
SetIcon(m_hIcon,FALSE);// Set small icon
// TODO: Addextra initialization here
//SetTimer(1,500,0);
//--------------------------------------------------
CRectrcClient;
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();
LOGFONTlfText;
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};
CStringstrPartsStatusBar;
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 adda minimize button to your dialog, you will need the code below
// to draw theicon. For MFC applications using the document/view model,
// this isautomatically done for you by the framework.
voidCMenuDlg::OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND,reinterpret_cast(dc.GetSafeHdc()), 0);
// Center iconin 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 theicon
dc.DrawIcon(x,y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The systemcalls this function to obtain the cursor to display while the user drags
// theminimized window.
HCURSORCMenuDlg::OnQueryDragIcon()
{
returnstatic_cast(m_hIcon);
}
voidCMenuDlg::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)
{
CFileDialogfileDlg(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)»));
}
}
}
BOOLCMenuDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message >= WM_KEYFIRST && pMsg->message
return::TranslateAccelerator(m_hWnd, m_hAccel, pMsg);
returnCDialog::PreTranslateMessage(pMsg);
}
voidCMenuDlg::OnWixod()//Выход--------------------------------------------
{CStringstr_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;
CFileDialogfileDlg(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)
{
}
}
}
voidCMenuDlg::OnOtkrit()//Открыть----------------------------------------
{
CString str_77, strText;
CStdioFile f;
CString str_r;
m_Edit1.GetWindowText(str_r);
if (str_r ==_T(""))
{
CFileDialogfileDlg(TRUE, _T(".txt"), NULL,
OFN_ALLOWMULTISELECT| OFN_FILEMUSTEXIST,
_T(«AllFiles (*.*) |*.*| 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)
{
//CStringpath;
CFileDialogfileDlg(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("-Блокнот"));
}
CFileDialogfileDlg1(TRUE, _T(".txt"), NULL,
OFN_ALLOWMULTISELECT| OFN_FILEMUSTEXIST,
_T(«AllFiles (*.*) |*.*| 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)
{
CFileDialogfileDlg(TRUE, _T(".txt"), NULL,
OFN_ALLOWMULTISELECT| OFN_FILEMUSTEXIST,
_T(«AllFiles (*.*) |*.*| 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("-Блокнот"));
}
}
}
}
voidCMenuDlg::OnSoxranit()//Сохранить-------------------------------
{
if (m_strPath== _T(«Безымянный») )
OnSoxranitkak();
else
{
CStdioFilefile;
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
{
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);
}
}
}
voidCMenuDlg::OnSoxranitkak()//Сохранить как------------------------
{
CStringstr_77, strText;
CFileDialogfileDlg(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
{
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);
}
voidCMenuDlg::OnWidelitwse()//Выделить все---------------------------
{
CEdit *mEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
mEdit->SetSel(0,-1);
mEdit->SetFocus();
}
voidCMenuDlg::OnShrift() //Шрифт-----------------------------------------------
{
LOGFONTlfText;
m_fontText.GetLogFont(&lfText);
CFontDialogfontDlg(&lfText);
if (fontDlg.DoModal())
{fontDlg.GetCurrentFont(&lfText);
m_fontText.DeleteObject();
m_fontText.CreateFontIndirect(&lfText);
m_Edit1.SetFont(&m_fontText);}
}
voidCMenuDlg::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);
CStringstrPartsStatusBar;
strPartsStatusBar.Format(_T(«Строка %d, столбец %d»), m_nStrStatusBar, m_nStolbetsStatusBar);
}
CWnd *pEdit =GetDlgItem(IDC_EDIT1);
if (pEdit !=NULL)
{
CRectrcClient;
GetClientRect(rcClient);
rcClient.InflateRect(-2,-2, -2, -20);
pEdit->MoveWindow(rcClient);
if(IsWindow(m_Edit1.m_hWnd))
{
m_wndStatusBar.MoveWindow(0,0, 0, 0);
CRectclientRect1;
CRectclientRStatusBar1;
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 UINTrgIconID[] =
{
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);
*/
}
}
voidCMenuDlg::Onblokn()//Модальное окно О блокноте---------------
{
mein dlg;
if(dlg.DoModal() == IDOK)
{
Beep(1500,300);
}
}
voidCMenuDlg::OnUdalit()//Удалить---------------------------------------
{
CEdit *mEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
mEdit->Clear();
mEdit->SetFocus();
}
voidCMenuDlg::OnWirezat()//Вырезать-----------------------------------
{
CEdit *mEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
mEdit->Cut();
mEdit->SetFocus();
}
voidCMenuDlg::OnKopirowat()//Копировать--------------------------------
{
CEdit *mEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
mEdit->Copy();
mEdit->SetFocus();
}
voidCMenuDlg::OnWstawit()//Вставить-------------------------------------
{
CEdit *mEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
mEdit->Paste();
mEdit->SetFocus();
}
VoidCMenuDlg::OnOtmenit()//Отменить----------------------------------
{
CEdit *mEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
mEdit->Undo();
mEdit->SetFocus();
}
voidCMenuDlg::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 );
}
/*elseif(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);
}*/
}
voidCMenuDlg::OnInitMenu(CMenu* pMenu)
{
CDialog::OnInitMenu(pMenu);
}
voidCMenuDlg::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;
CFileDialogfdlg(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();
}
voidCMenuDlg::OnSprawka2()//Вызов справки----------------------------
{
MessageBox(_T(«Самопалот Лехи „) ,
_T(“Блокнот»), MB_OK | MB_ICONINFORMATION);
}
voidCMenuDlg::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;
}
voidCMenuDlg::OnNautidalee()//Найти далее-------------------------------
{
OnNauti();
/*if (!m_Find)
OnEditMfind();
else
m_nauti->OnNauti();*/
}
voidCMenuDlg::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);
//}
}
voidCMenuDlg::OnT()//строка состояние-------------------------------------
{
CMenu* pMenu =GetMenu()->GetSubMenu(3);
CWnd *pEdit =GetDlgItem(IDC_EDIT1);
CRectrcEditSize;
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;
}
}
voidCMenuDlg::OnTimer(UINT nIDEvent)//Он таймер-------------------
{
CStringstrPartsStatusBar;
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);
}
LRESULTCMenuDlg::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;
}
voidCMenuDlg::OnTrayOpen()
{
ShowWindow(SW_RESTORE);
SetForegroundWindow();
Shell_NotifyIcon(NIM_DELETE,&m_nidTray);
}
voidCMenuDlg::OnTrayExit()
{
Shell_NotifyIcon(NIM_DELETE,&m_nidTray);
EndDialog(0);
}
voidCMenuDlg::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);
}
}
voidCMenuDlg::OnPereuti()//перейти-----------------------------------------
{
/*
pereuti move;
CStringstr,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
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));
}
}
voidCMenuDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CDialog::OnInitMenuPopup(pPopupMenu,nIndex, bSysMenu);
CEdit *pEdit =(CEdit *)GetDlgItem(IDC_EDIT1);
intnFerstChar, nSecondChar;
CStringstrEdit;
pEdit->GetSel(nFerstChar,nSecondChar);
pEdit->GetWindowText(strEdit);
UINT format =CF_TEXT;
BOOLbClipboard = 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));
}