
/**** Arquivo Principal ****/
#include <windows.h>
#include <commdlg.h>
#include "resource.h"
#define EDITID 1
#define UNTITLED TEXT("(Editor de Texto)")
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
/**Functions in ConfigurarArquivo.C*/
void PopFileInitialize(HWND);
BOOL PopFileOpenDlg(HWND, PTSTR, PTSTR);
BOOL PopFileSaveDlg(HWND, PTSTR, PTSTR);
BOOL PopFileRead(HWND, PTSTR);
BOOL PopFileWrite(HWND, PTSTR);
HWND PopFindFindDlg(HWND);
HWND PopFindReplaceDlg(HWND);
BOOL PopFindFindText(HWND, int *, LPFINDREPLACE);
BOOL PopFindReplaceText(HWND, int *, LPFINDREPLACE);
BOOL PopFindNextText(HWND, int *);
BOOL PopFindValidFind(void);
/**Functions in ConfigurarFonte.C*/
void PopFontInitialize(HWND);
BOOL PopFontChooseFont(HWND);
void PopFontSetFont(HWND);
void PopFontDeinitialize(void);
/**Functions in ConfigurarImpressora.C*/
BOOL PopPrntPrintFile(HINSTANCE, HWND, HWND, PTSTR);
// Global variables
static HWND hDlgModeless;
static TCHAR szAppName[] = TEXT("Editor");
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, PSTR szCL, int iCmdShow) {
MSG msg;
HWND hwnd;
HACCEL hAccel;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hI;
wndclass.hIcon = LoadIcon(hI, szAppName);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = GetSysColorBrush(WHITE_BRUSH);
wndclass.lpszMenuName = szAppName;
wndclass.lpszClassName = szAppName;
if(!RegisterClass(&wndclass)) {
MessageBox(
NULL,
TEXT("This program requires Windows NT!"),
szAppName,
MB_ICONERROR
);
return 0;
}
hwnd = CreateWindow(
szAppName, NULL, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hI, szCL
);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
hAccel = LoadAccelerators(hI, szAppName);
while(GetMessage(&msg, NULL, 0, 0)) {
if(hDlgModeless == NULL || !IsDialogMessage(hDlgModeless, &msg)) {
if(!TranslateAccelerator (hwnd, hAccel, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
FreeConsole();
}
}
}
return msg.wParam;
}
void DoCaption(HWND hwnd, TCHAR *szTitleName) {
TCHAR szCaption[64 + MAX_PATH];
wsprintf(
szCaption,
TEXT("%s â %s"),
szAppName,
szTitleName[0] ? szTitleName : UNTITLED
);
SetWindowText(hwnd, szCaption);
}
void OkMessage(HWND hwnd, TCHAR * szMessage, TCHAR * szTitleName) {
TCHAR szBuffer[64 + MAX_PATH];
wsprintf(szBuffer,szMessage,szTitleName[0]?szTitleName:UNTITLED);
MessageBox(
hwnd,
szBuffer,
szAppName,
MB_OK | MB_ICONEXCLAMATION
);
}
short AskAboutSave(HWND hwnd, TCHAR * szTitleName) {
TCHAR szBuffer[64 + MAX_PATH];
int iReturn;
wsprintf(
szBuffer,
TEXT("Save current changes in %s?"),
szTitleName[0] ? szTitleName : UNTITLED
);
iReturn = MessageBox(
hwnd,
szBuffer,
szAppName,
MB_YESNOCANCEL | MB_ICONQUESTION
);
if(iReturn == IDYES)
if(!SendMessage (hwnd, WM_COMMAND, IDM_FILE_SAVE, 0))
iReturn = IDCANCEL;
return iReturn;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg, WPARAM wP,LPARAM lParam) {
static BOOL bNeedSave = FALSE;
static HINSTANCE hInst;
static HWND hEdit;
static int iOffset;
static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH];
static UINT messageFindReplace;
int iSelBeg, iSelEnd, iEnable;
LPFINDREPLACE pfr;
switch(msg) {
case WM_CREATE:
hInst = ((LPCREATESTRUCT) lParam) -> hInstance;
// Create the edit control child window
hEdit = CreateWindow(
TEXT("edit"),NULL,WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL |
WS_BORDER | ES_LEFT | ES_MULTILINE |
ES_NOHIDESEL | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
0, 0, 0, 0,
hwnd, (HMENU) EDITID, hInst, NULL
);
SendMessage(hEdit, EM_LIMITTEXT, 32000, 0L);
/**Initialize common dialog box stuff*/
PopFileInitialize(hwnd);
PopFontInitialize(hEdit);
messageFindReplace = RegisterWindowMessage(FINDMSGSTRING);
DoCaption(hwnd, szTitleName);
return 0;
case WM_SETFOCUS:
SetFocus(hEdit);
return 0;
case WM_SIZE:
MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
return 0;
case WM_INITMENUPOPUP:
switch(lParam) {
case 1: // Edit menu
EnableMenuItem(
(HMENU) wP,
IDM_EDIT_UNDO,
SendMessage(hEdit,EM_CANUNDO,0,0L)?MF_ENABLED:MF_GRAYED
);
// Enable Paste if text is in the clipboard
EnableMenuItem(
(HMENU) wP,
IDM_EDIT_PASTE,
IsClipboardFormatAvailable(CF_TEXT)?MF_ENABLED:MF_GRAYED
);
// Enable Cut, Copy, and Del if text is selected
SendMessage(
hEdit,
EM_GETSEL,
(WPARAM) &iSelBeg,
(LPARAM) &iSelEnd
);
iEnable = iSelBeg != iSelEnd ? MF_ENABLED : MF_GRAYED;
EnableMenuItem((HMENU) wP, IDM_EDIT_CUT, iEnable);
EnableMenuItem((HMENU) wP, IDM_EDIT_COPY, iEnable);
EnableMenuItem((HMENU) wP, IDM_EDIT_CLEAR, iEnable);
break;
case 2: // Search menu
iEnable = hDlgModeless == NULL ? MF_ENABLED : MF_GRAYED;
EnableMenuItem((HMENU) wP, IDM_SEARCH_FIND, iEnable);
EnableMenuItem((HMENU) wP, IDM_SEARCH_NEXT, iEnable);
EnableMenuItem((HMENU) wP, IDM_SEARCH_REPLACE, iEnable);
break;
}
return 0;
case WM_COMMAND:
// Messages from edit control
if(lParam && LOWORD(wP) == EDITID) {
switch(HIWORD(wP)) {
case EN_UPDATE:
bNeedSave = TRUE;
return 0;
case EN_ERRSPACE:
case EN_MAXTEXT:
MessageBox(
hwnd,
TEXT("Edit control out of space."),
szAppName,
MB_OK | MB_ICONSTOP
);
return 0;
}
break;
}
switch(LOWORD(wP)) {
// Messages from File menu
case IDM_FILE_NEW:
if(bNeedSave && IDCANCEL==AskAboutSave(hwnd, szTitleName)) {
return 0;
}
SetWindowText(hEdit, TEXT("\0"));
szFileName[0] = '\0';
szTitleName[0] = '\0';
DoCaption(hwnd, szTitleName);
bNeedSave = FALSE;
return 0;
case IDM_FILE_OPEN:
if(bNeedSave && IDCANCEL == AskAboutSave(hwnd,szTitleName))
return 0;
if(PopFileOpenDlg (hwnd, szFileName, szTitleName)) {
if(!PopFileRead(hEdit, szFileName)) {
OkMessage(
hwnd,
TEXT("Could not read file %s!"),
szTitleName
);
szFileName[0] = '\0';
szTitleName[0] = '\0';
}
}
DoCaption(hwnd, szTitleName);
bNeedSave = FALSE;
return 0;
case IDM_FILE_SAVE:
if(szFileName[0]) {
if(PopFileWrite(hEdit, szFileName)) {
bNeedSave = FALSE;
return 1;
}
else {
OkMessage(
hwnd,
TEXT("Could not write file %s"),
szTitleName
);
return 0;
}
}
case IDM_FILE_SAVE_AS:
if(PopFileSaveDlg(hwnd, szFileName, szTitleName)) {
DoCaption (hwnd, szTitleName);
if(PopFileWrite(hEdit, szFileName)) {
bNeedSave = FALSE;
return 1;
}
else {
OkMessage(
hwnd,
TEXT("Could not write file %s"),
szTitleName
);
return 0;
}
}
return 0;
case IDM_FILE_PRINT:
if(!PopPrntPrintFile(hInst, hwnd, hEdit, szTitleName)) {
OkMessage(
hwnd,
TEXT("Could not print file %s"),
szTitleName
);
}
return 0;
case IDM_APP_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
// Messages from Edit menu
case IDM_EDIT_UNDO:
SendMessage(hEdit, WM_UNDO, 0, 0);
return 0;
case IDM_EDIT_CUT:
SendMessage(hEdit, WM_CUT, 0, 0);
return 0;
case IDM_EDIT_COPY:
SendMessage(hEdit, WM_COPY, 0, 0);
return 0;
case IDM_EDIT_PASTE:
SendMessage(hEdit, WM_PASTE, 0, 0);
return 0;
case IDM_EDIT_CLEAR:
SendMessage(hEdit, WM_CLEAR, 0, 0);
return 0;
case IDM_EDIT_SELECT_ALL:
SendMessage(hEdit, EM_SETSEL, 0, -1);
return 0;
// Messages from Search menu
case IDM_SEARCH_FIND:
SendMessage(hEdit, EM_GETSEL, 0, (LPARAM) &iOffset);
hDlgModeless = PopFindFindDlg(hwnd);
return 0;
case IDM_SEARCH_NEXT:
SendMessage(hEdit, EM_GETSEL, 0, (LPARAM) &iOffset);
if(PopFindValidFind())
PopFindNextText(hEdit, &iOffset);
else
hDlgModeless = PopFindFindDlg(hwnd);
return 0;
case IDM_SEARCH_REPLACE:
SendMessage(hEdit, EM_GETSEL, 0, (LPARAM) &iOffset);
hDlgModeless = PopFindReplaceDlg(hwnd);
return 0;
case IDM_FORMAT_FONT:
if(PopFontChooseFont (hwnd))
PopFontSetFont(hEdit);
return 0;
case IDM_AJUDA:
OkMessage(
hwnd,
TEXT("Help not yet implemented!"),
TEXT("\0")
);
return 0;
case IDM_APP_ABOUT:
DialogBox(hInst, TEXT("AboutBox"), hwnd, AboutDlgProc);
return 0;
}
break;
case WM_CLOSE:
if(!bNeedSave || IDCANCEL != AskAboutSave(hwnd, szTitleName))
DestroyWindow(hwnd);
return 0;
case WM_QUERYENDSESSION:
if(!bNeedSave || IDCANCEL != AskAboutSave(hwnd, szTitleName))
return 1;
return 0;
case WM_DESTROY:
PopFontDeinitialize();
PostQuitMessage(0);
return 0;
default:
/**Process "FindâReplace" messages*/
if(msg == messageFindReplace) {
pfr = (LPFINDREPLACE) lParam;
if(pfr->Flags & FR_DIALOGTERM)
hDlgModeless = NULL;
if(pfr->Flags & FR_FINDNEXT)
if(!PopFindFindText(hEdit, &iOffset, pfr))
OkMessage(hwnd, TEXT("Text not found!"), TEXT("\0"));
if(pfr->Flags & FR_REPLACE || pfr->Flags & FR_REPLACEALL)
if(!PopFindReplaceText(hEdit, &iOffset, pfr))
OkMessage(hwnd, TEXT("Text not found!"), TEXT("\0"));
if(pfr->Flags & FR_REPLACEALL)
while(PopFindReplaceText(hEdit, &iOffset, pfr));
return 0;
}
break;
}
return DefWindowProc(hwnd, msg, wP, lParam);
}
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP) {
switch(msg) {
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wP)) {
case IDOK:
EndDialog(hDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}
/**** Arquivo: ConfigurarArquivo.c ****/
#include <windows.h>
#include <commdlg.h>
static OPENFILENAME ofn;
void PopFileInitialize(HWND hwnd) {
static TCHAR szFilter[] = TEXT("Text Files(*.TXT)\0*.txt\0") \
TEXT ("ASCII Files (*.ASC)\0*.asc\0") \
TEXT ("All Files (*.*)\0*.*\0\0");
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.hInstance = NULL;
ofn.lpstrFilter = szFilter;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = NULL;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = NULL;
ofn.Flags = 0;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = TEXT("txt");
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
}
BOOL PopFileOpenDlg(HWND hwnd,PTSTR pstrFileName,
PTSTR pstrTitleName) {
ofn.hwndOwner = hwnd;
ofn.lpstrFile = pstrFileName;
ofn.lpstrFileTitle = pstrTitleName;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
return GetOpenFileName(&ofn);
}
BOOL PopFileSaveDlg(HWND hwnd, PTSTR pFileName, PTSTR pstrTitleName) {
ofn.hwndOwner = hwnd;
ofn.lpstrFile = pFileName;
ofn.lpstrFileTitle = pstrTitleName;
ofn.Flags = OFN_OVERWRITEPROMPT;
return GetSaveFileName(&ofn);
}
BOOL PopFileRead(HWND hwndEdit, PTSTR pstrFileName) {
BYTE bySwap;
DWORD dwBytesRead;
HANDLE hFile;
int i, iFileLength, iUniTest;
PBYTE pBuffer, pText, pConv;
// Open the file
if(INVALID_HANDLE_VALUE ==
(hFile=CreateFile(pstrFileName,GENERIC_READ,FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL)))
return FALSE;
// Get file size in bytes and allocate memory for read. // Add an extra two bytes for zero termination.
iFileLength = GetFileSize(hFile, NULL);
pBuffer = malloc (iFileLength + 2);
// Read file and put terminating zeros at end.
ReadFile(hFile, pBuffer, iFileLength, &dwBytesRead, NULL);
CloseHandle (hFile);
pBuffer[iFileLength] = '\0';
pBuffer[iFileLength + 1] = '\0';
iUniTest = IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_REVERSE_SIGNATURE;
if(IsTextUnicode(pBuffer, iFileLength, &iUniTest)) {
pText = pBuffer + 2;
iFileLength -= 2;
if(iUniTest & IS_TEXT_UNICODE_REVERSE_SIGNATURE) {
for(i = 0; i < iFileLength / 2; i++) {
bySwap = ((BYTE *) pText) [2 * i];
((BYTE *) pText) [2 * i] = ((BYTE *) pText) [2 * i + 1];
((BYTE *) pText) [2 * i + 1] = bySwap;
}
}
// Allocate memory for possibly converted string
pConv = malloc(iFileLength + 2);
// If the edit control is not Unicode, convert Unicode text to
// nonâUnicode (i.e., in general, wide character).
#ifndef UNICODE
WideCharToMultiByte(CP_ACP, 0, (PWSTR) pText, -1, pConv,iFileLength + 2, NULL, NULL) ;
// If the edit control is Unicode, just copy the string
#else
lstrcpy ((PTSTR) pConv, (PTSTR) pText);
#endif
}
else {
pText = pBuffer;
pConv = malloc(2 * iFileLength + 2);
// If the edit control is Unicode, convert ASCII text.
#ifdef UNICODE MultiByteToWideChar (CP_ACP, 0, pText, â1, (PTSTR) pConv, iFileLength + 1);
// If not, just copy buffer
#else lstrcpy ((PTSTR) pConv, (PTSTR) pText) ; #endif
#endif // lstrcpy
}
SetWindowText(hwndEdit, (PTSTR) pConv);
free(pBuffer);
free(pConv);
return TRUE;
}
BOOL PopFileWrite(HWND hwndEdit, PTSTR pstrFileName) {
DWORD dwBytesWritten;
HANDLE hFile;
int iLength;
PTSTR pstrBuffer;
WORD wByteOrderMark = 0xFEFF;
// Open the file, creating it if necessary
if(INVALID_HANDLE_VALUE ==
(hFile = CreateFile(pstrFileName, GENERIC_WRITE, 0,
NULL, CREATE_ALWAYS, 0, NULL)))
return FALSE;
// Get the number of characters in the edit control and allocate
// memory for them.
iLength = GetWindowTextLength(hwndEdit);
pstrBuffer = (PTSTR) malloc((iLength + 1) * sizeof(TCHAR));
if(!pstrBuffer) {
CloseHandle(hFile);
return FALSE;
}
// If the edit control will return Unicode text, write the // byte order mark to the file.
#ifdef UNICODE WriteFile (hFile, &wByteOrderMark, 2, &dwBytesWritten, NULL);
#endif
// Get the edit buffer and write that out to the file.
GetWindowText(hwndEdit, pstrBuffer, iLength + 1);
WriteFile(hFile, pstrBuffer, iLength * sizeof(TCHAR), &dwBytesWritten, NULL);
if((iLength * sizeof (TCHAR)) != (int) dwBytesWritten) {
CloseHandle(hFile);
free(pstrBuffer);
return FALSE;
}
CloseHandle(hFile);
free(pstrBuffer);
return TRUE;
}
/**** Arquivo: ConfigurarBusca.c ****/
#include <windows.h>
#include <commdlg.h>
#include <tchar.h> // for _tcsstr (strstr for Unicode & nonâUnicode)
#define MAX_STRING_LEN 256
static TCHAR szFindText[MAX_STRING_LEN];
static TCHAR szReplText[MAX_STRING_LEN];
HWND PopFindFindDlg(HWND hwnd) {
static FINDREPLACE fr;// must be static for modeless dialog!!!
fr.lStructSize = sizeof(FINDREPLACE);
fr.hwndOwner = hwnd;
fr.hInstance = NULL;
fr.Flags = FR_HIDEUPDOWN | FR_HIDEMATCHCASE | FR_HIDEWHOLEWORD;
fr.lpstrFindWhat = szFindText;
fr.lpstrReplaceWith = NULL;
fr.wFindWhatLen = MAX_STRING_LEN;
fr.wReplaceWithLen = 0;
fr.lCustData = 0;
fr.lpfnHook = NULL;
fr.lpTemplateName = NULL;
return FindText(&fr);
}
HWND PopFindReplaceDlg(HWND hwnd) {
static FINDREPLACE fr; // must be static for modeless dialog!!!
fr.lStructSize = sizeof(FINDREPLACE);
fr.hwndOwner = hwnd;
fr.hInstance = NULL;
fr.Flags = FR_HIDEUPDOWN | FR_HIDEMATCHCASE | FR_HIDEWHOLEWORD;
fr.lpstrFindWhat = szFindText;
fr.lpstrReplaceWith = szReplText;
fr.wFindWhatLen = MAX_STRING_LEN;
fr.wReplaceWithLen = MAX_STRING_LEN;
fr.lCustData = 0;
fr.lpfnHook = NULL;
fr.lpTemplateName = NULL;
return ReplaceText(&fr);
}
BOOL PopFindFindText(HWND hwndEdit, int *piSearchOffset, LPFINDREPLACE pfr) {
int iLength, iPos;
PTSTR pstrDoc, pstrPos;
// Read in the edit document
iLength = GetWindowTextLength(hwndEdit);
if(NULL == (pstrDoc = (PTSTR) malloc((iLength + 1) * sizeof(TCHAR))))
return FALSE;
GetWindowText(hwndEdit, pstrDoc, iLength + 1);
// Search the document for the find string
pstrPos = _tcsstr(pstrDoc + *piSearchOffset, pfr->lpstrFindWhat);
free (pstrDoc);
// Return an error code if the string cannot be found
if(pstrPos == NULL)
return FALSE;
// Find the position in the document and the new start offset
iPos = pstrPos - pstrDoc;
* piSearchOffset = iPos + lstrlen (pfr->lpstrFindWhat);
// Select the found text
SendMessage(hwndEdit, EM_SETSEL, iPos, * piSearchOffset);
SendMessage(hwndEdit, EM_SCROLLCARET, 0, 0);
return TRUE;
}
BOOL PopFindNextText(HWND hwndEdit, int * piSearchOffset) {
FINDREPLACE fr;
fr.lpstrFindWhat = szFindText;
return PopFindFindText(hwndEdit, piSearchOffset, &fr);
}
BOOL PopFindReplaceText(HWND hwndEdit, int *piSearchOffset, LPFINDREPLACE pfr) {
// Find the text
if(!PopFindFindText(hwndEdit, piSearchOffset, pfr))
return FALSE;
// Replace it
SendMessage(hwndEdit, EM_REPLACESEL, 0, (LPARAM) pfr->lpstrReplaceWith);
return TRUE;
}
BOOL PopFindValidFind(void) {
return * szFindText != '\0';
}
/**** Arquivo: ConfigurarFonte.c ****/
#include <windows.h>
#include <commdlg.h>
static LOGFONT logfont;
static HFONT hFont;
BOOL PopFontChooseFont(HWND hwnd) {
CHOOSEFONT cf;
cf.lStructSize = sizeof(CHOOSEFONT);
cf.hwndOwner = hwnd;
cf.hDC = NULL;
cf.lpLogFont = &logfont;
cf.iPointSize = 0;
cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_EFFECTS;
cf.rgbColors = 0;
cf.lCustData = 0;
cf.lpfnHook = NULL;
cf.lpTemplateName = NULL;
cf.hInstance = NULL;
cf.lpszStyle = NULL;
cf.nFontType = 0;
cf.nSizeMin = 0;
cf.nSizeMax = 0;
return ChooseFont(&cf);
}
void PopFontInitialize(HWND hwndEdit) {
GetObject(
GetStockObject(SYSTEM_FONT),
sizeof(LOGFONT),
(PTSTR) &logfont
);
hFont = CreateFontIndirect(&logfont);
SendMessage(hwndEdit, WM_SETFONT, (WPARAM) hFont, 0);
}
void PopFontSetFont(HWND hwndEdit) {
HFONT hFontNew;
RECT rect;
hFontNew = CreateFontIndirect(&logfont);
SendMessage(hwndEdit, WM_SETFONT, (WPARAM) hFontNew, 0);
DeleteObject(hFont);
hFont = hFontNew;
GetClientRect(hwndEdit, &rect);
InvalidateRect(hwndEdit, &rect, TRUE);
}
void PopFontDeinitialize(void) {
DeleteObject(hFont);
}
/**** Arquivo: ConfigurarImpressora.c ****/
#include <windows.h>
BOOL PopPrntPrintFile(HINSTANCE hInst, HWND hwnd, HWND hEdit, PTSTR pTitleName) {
return FALSE;
}
/**** Arquivo: resource.h ****/
#define IDC_FILENAME 1000
#define IDM_FILE_NEW 40001
#define IDM_FILE_OPEN 40002
#define IDM_FILE_SAVE 40003
#define IDM_FILE_SAVE_AS 40004
#define IDM_FILE_PRINT 40005
#define IDM_APP_EXIT 40006
#define IDM_EDIT_UNDO 40007
#define IDM_EDIT_CUT 40008
#define IDM_EDIT_COPY 40009
#define IDM_EDIT_PASTE 40010
#define IDM_EDIT_CLEAR 40011
#define IDM_EDIT_SELECT_ALL 40012
#define IDM_SEARCH_FIND 40013
#define IDM_SEARCH_NEXT 40014
#define IDM_SEARCH_REPLACE 40015
#define IDM_FORMAT_FONT 40016
#define IDM_AJUDA 40017
#define IDM_APP_ABOUT 40018
/**** Arquivo: resource.rc ****/
#include "resource.h"
#include "afxres.h"
ABOUTBOX DIALOG DISCARDABLE 32, 32, 180, 100
STYLE DS_MODALFRAME | WS_POPUP
FONT 10, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "OK", IDOK,66,80, 50,14
ICON "Editor", IDC_STATIC, 7, 7, 20,20
CTEXT "Arquivos Necessários:", IDC_STATIC,40,12,100, 8
CTEXT "libgdi32.a",IDC_STATIC, 7,40,166, 8
CTEXT "libcomdlg32.a", IDC_STATIC, 7,52,166, 8
END
PRINTDLGBOX DIALOG DISCARDABLE 32, 32, 186, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Editor"
FONT 10, "MS Sans Serif"
BEGIN
PUSHBUTTON "Cancel", IDCANCEL,67,74, 50,14
CTEXT "Sending", IDC_STATIC, 8, 8,172, 8
CTEXT "", IDC_FILENAME, 8,28,172, 8
CTEXT "to print spooler.",IDC_STATIC, 8,48,172, 8
END
/////////////////////////////////// // Menu
Editor MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New\tCtrl+N", IDM_FILE_NEW
MENUITEM "&Open...\tCtrl+O",IDM_FILE_OPEN
MENUITEM "&Save\tCtrl+S", IDM_FILE_SAVE
MENUITEM "Save &As...", IDM_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "&Print\tCtrl+P", IDM_FILE_PRINT
MENUITEM SEPARATOR
MENUITEM "E&xit", IDM_APP_EXIT
END
POPUP "&Editar"
BEGIN
MENUITEM "&Undo\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", IDM_EDIT_CUT
MENUITEM "&Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Paste\tCtrl+V",IDM_EDIT_PASTE
MENUITEM "De&lete\tDel", IDM_EDIT_CLEAR
MENUITEM SEPARATOR
MENUITEM "&Select All", IDM_EDIT_SELECT_ALL
END
POPUP "Busca"
BEGIN
MENUITEM "&Find...\tCtrl+F", IDM_SEARCH_FIND
MENUITEM "Find &Next\tF3", IDM_SEARCH_NEXT
MENUITEM "&Replace...\tCtrl+R",IDM_SEARCH_REPLACE
END
POPUP "F&ormat"
BEGIN
MENUITEM "&Font...", IDM_FORMAT_FONT
END
POPUP "Ajuda"
BEGIN
MENUITEM "&Help", IDM_AJUDA
MENUITEM "&About PopPad...", IDM_APP_ABOUT
END
END
Editor ACCELERATORS DISCARDABLE
BEGIN
VK_BACK, IDM_EDIT_UNDO, VIRTKEY, ALT, NOINVERT
VK_DELETE,IDM_EDIT_CLEAR, VIRTKEY, NOINVERT
VK_DELETE,IDM_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT
VK_F1, IDM_AJUDA, VIRTKEY, NOINVERT
VK_F3, IDM_SEARCH_NEXT,VIRTKEY, NOINVERT
VK_INSERT,IDM_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT
VK_INSERT,IDM_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT
"^C", IDM_EDIT_COPY, ASCII, NOINVERT
"^F", IDM_SEARCH_FIND, ASCII, NOINVERT
"^N", IDM_FILE_NEW, ASCII, NOINVERT
"^O", IDM_FILE_OPEN, ASCII, NOINVERT
"^P", IDM_FILE_PRINT, ASCII, NOINVERT
"^R", IDM_SEARCH_REPLACE,ASCII, NOINVERT
"^S", IDM_FILE_SAVE, ASCII, NOINVERT
"^V", IDM_EDIT_PASTE, ASCII, NOINVERT
"^X", IDM_EDIT_CUT, ASCII, NOINVERT
"^Z", IDM_EDIT_UNDO, ASCII, NOINVERT
END
Editor ICON DISCARDABLE "poppad.ico"
Comentários
Postar um comentário