eName=NULL;=FindText(amp;find);
};
Меню Вставка. Це меню складається з основних пунктів: Дата і час і Символ. Пункт Символ складається з трьох підпунктів, які окремо прописуються в черзі повідомлень (IDP_Alpha, IDP_Sigma, IDP_Omega). Таймер в даній програмі використовується для самої вставки дати і часу.
case IDP_Datetime:
{size=GetWindowTextLength (edit); * m=new char [size + 100]; (edit, m, size + 1); _ t rawtime; tm * timeinfo; ( amp; rawtime); =localtime ( amp; rawtime); * txt=asctime (timeinfo); (m + size, txt);
//SendMessage (edit, WM_SETTEXT, (WPARAM) txt, 0); (edit, m); [] m;
}; IDP_Alpha:
//Вставка символу Альфа
{cr; .cpMin=- 1; .cpMax=- 1;
//Стає в кінець Richedit (edit, EM_EXSETSEL, 0, (LPARAM) amp; cr); _ t str []=L 0x0391 raquo ;; (edit, EM_REPLACESEL, 0, (LPARAM) str );
}; IDP_Sigma:
//Вставка символу Сигма
break; IDP_Omega:
//Вставка символу Омега raquo ;;
Меню Формат. Це меню складається з одного пункту Шрифт, тобто IDP_Font. Це меню складається з двох основних структур - логічного і вбудованого шрифтів (тобто LOGFONT і CHOOSEFONT), а також з безлічі функцій для роботи зі шрифтом. В якості довідника, для цих цілей використовується сайт з назвою msdn.microsoft.
case IDP_Font:
{lf;cf;.lStructSize=sizeof(cf);.hwndOwner=hWnd;.lpLogFont=amp;lf;.Flags=CF_EFFECTS|CF_SCREENFONTS;.hInstance=0;result=ChooseFont(amp;cf);(!result)
{(hWnd, E , E , MB_OK) ;;
}
{= CreateFontIndirect ( amp; lf);
textcolor=cf.rgbColors;
//Розмір виділення для всього тексту
CHARRANGE cr; .cpMin=0; .cpMax=- 1; (edit, EM_EXSETSEL, 0, (LPARAM) amp; cr); cf2; .cbSize=sizeof (cf2) ;. dwMask= CFM_COLOR | CFM_FACE | CFM_ITALIC | CFE_BOLD; .dwEffects=cf.lpLogFont- gt; lfItalic? CFE_ITALIC: 0; .dwEffects |=cf.lpLogFont- gt; lfWeight gt;=300? CFE_BOLD: 0; .yHeight=20; .yOffset=10; (cf2.szFaceName, cf.lpLogFont- gt; lfFaceName) ;. crTextColor=cf.rgbColors; res=SendMessage (edit, EM_SETCHARFORMAT, _SELECTION, (LPARAM) amp; cf2); (res == 0) (hWnd, qqqq raquo ;, qq raquo ;, MB_OK);
//SendMessage (edit, WM_SETFONT, (WPARAM) font, TRUE);
}
};
Меню Довідка. Для простоти рішення задачі, проектується меню що містить тільки один пункт з назвою Виклик довідки. Другий пункт в даному проекті не використовується. Пункт Виклик довідки описаний таким чином:
case IDP_Help: (hWnd, myhelp.hlp raquo ;, HELP_CONTENTS, 0);
break;
Для опису всіх вкладених меню використовується наступна конструкція:
case WM_MENUSELECT: (((UINT) HIWORD (wParam) == 0xffff) amp; ((HMENU) lParam == 0))
{(hStatusWindow, SB_SETTEXT, (WPARAM) 0,
(LPARAM) pMessages [5]); 0;
} ((UINT) HIWORD (wParam) amp; MF_SYSMENU)
{(hStatusWindow, SB_SETTEXT, (WPARAM) 0,
(LPARAM) pMessages [6]); 0;
} ((UINT) HIWORD (wParam) amp; MF_POPUP)
{(hStatusWindow, SB_SETTEXT, (WPARAM) 0,
(LPARAM) pMessages [3 + LOWORD (wParam)]); 0;
} (hStatusWindow, SB_SETTEXT, (WPARAM) 0, (LPARAM) pMessages [LOWORD (wParam)]);
return 0;
//Описується контекстне менюWM_RBUTTONDOWN:
{hMenu1=CreatePopupMenu (); (hMenu1, MFT_STRING, IDP_All, amp; Виділити все ); (hMenu1, MFT_SEPARATOR, 0, NULL); (hMenu1, MFT_STRING, IDM_Exit, amp; Вихід ); (hMenu1, TPM_RIGHTBUTTON | TPM_TOPALIGN | TPM_LEFTALIGN, (lParam), HIWORD (lParam), 0, hWnd, NULL); (hMenu1);
};
. Лістинг програми
//Програма БЛОКНОТ
# define _RICHEDIT_VER 0x0200
# include lt; windows.h gt;
# include lt; richedit.h gt;
# include lt; iostream.h gt;
# include lt; fstream.h gt;
# include lt; commctrl.h gt;
# include lt; time.h gt;
# include lt; stdlib.h gt;
//Бібліотека lt; commc...