main.cpp
#include <windows.h>
#include "resource.h"
#define EDITID 1
#define UNTITLED TEXT ("(untitled)")
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
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);
void PopFontInitialize(HWND);
BOOL PopFontChooseFont(HWND);
void PopFontSetFont(HWND);
void PopFontDeinitialize(void);
BOOL PopPrntPrintFile(HINSTANCE, HWND, HWND, PTSTR);
static HWND hDlgModeless;
static TCHAR szAppName[] = TEXT("PopPad");
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, 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 = hInstance;
wndclass.hIcon = LoadIcon(hInstance, szAppName);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = szAppName;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("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, hInstance, szCmdLine);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
hAccel = LoadAccelerators(hInstance, szAppName);
while (GetMessage(&msg, NULL, 0, 0))
{
if (hDlgModeless == NULL || !IsDialogMessage(hDlgModeless, &msg))
{
if (!TranslateAccelerator(hwnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
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 message, WPARAM wParam, LPARAM lParam)
{
static BOOL bNeedSave = FALSE;
static HINSTANCE hInst;
static HWND hwndEdit;
static int iOffset;
static int iStart;
static TCHAR szFileName[MAX_PATH], szTitleName[MAX_PATH];
static UINT messageFindReplace;
int iSelBeg, iSelEnd, iEnable;
LPFINDREPLACE pfr;
switch (message)
{
case WM_CREATE:
hInst = ((LPCREATESTRUCT)lParam)->hInstance;
hwndEdit = 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(hwndEdit, EM_LIMITTEXT, 32000, 0L);
PopFileInitialize(hwnd);
PopFontInitialize(hwndEdit);
messageFindReplace = RegisterWindowMessage(FINDMSGSTRING);
DoCaption(hwnd, szTitleName);
return 0;
case WM_SETFOCUS:
SetFocus(hwndEdit);
return 0;
case WM_SIZE:
MoveWindow(hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
return 0;
case WM_INITMENUPOPUP:
switch (lParam)
{
case 1:
EnableMenuItem((HMENU)wParam, IDM_EDIT_UNDO,
SendMessage(hwndEdit, EM_CANUNDO, 0, 0L) ?
MF_ENABLED : MF_GRAYED);
EnableMenuItem((HMENU)wParam, IDM_EDIT_PASTE,
IsClipboardFormatAvailable(CF_TEXT) ?
MF_ENABLED : MF_GRAYED);
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&iSelBeg,
(LPARAM)&iSelEnd);
iEnable = iSelBeg != iSelEnd ? MF_ENABLED : MF_GRAYED;
EnableMenuItem((HMENU)wParam, IDM_EDIT_CUT, iEnable);
EnableMenuItem((HMENU)wParam, IDM_EDIT_COPY, iEnable);
EnableMenuItem((HMENU)wParam, IDM_EDIT_CLEAR, iEnable);
break;
case 2:
iEnable = hDlgModeless == NULL ?
MF_ENABLED : MF_GRAYED;
EnableMenuItem((HMENU)wParam, IDM_SEARCH_FIND, iEnable);
EnableMenuItem((HMENU)wParam, IDM_SEARCH_NEXT, iEnable);
EnableMenuItem((HMENU)wParam, IDM_SEARCH_REPLACE, iEnable);
break;
}
return 0;
case WM_COMMAND:
if (lParam && LOWORD(wParam) == EDITID)
{
switch (HIWORD(wParam))
{
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(wParam))
{
case IDM_FILE_NEW:
if (bNeedSave && IDCANCEL == AskAboutSave(hwnd, szTitleName))
return 0;
SetWindowText(hwndEdit, 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(hwndEdit, 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(hwndEdit, 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(hwndEdit, 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, hwndEdit, szTitleName))
OkMessage(hwnd, TEXT("Could not print file %s"),
szTitleName);
return 0;
case IDM_APP_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
case IDM_EDIT_UNDO:
SendMessage(hwndEdit, WM_UNDO, 0, 0);
return 0;
case IDM_EDIT_CUT:
SendMessage(hwndEdit, WM_CUT, 0, 0);
return 0;
case IDM_EDIT_COPY:
SendMessage(hwndEdit, WM_COPY, 0, 0);
return 0;
case IDM_EDIT_PASTE:
SendMessage(hwndEdit, WM_PASTE, 0, 0);
return 0;
case IDM_EDIT_CLEAR:
SendMessage(hwndEdit, WM_CLEAR, 0, 0);
return 0;
case IDM_EDIT_SELECT_ALL:
SendMessage(hwndEdit, EM_SETSEL, 0, -1);
return 0;
case IDM_SEARCH_FIND:
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iOffset);
if (iStart == iOffset)
{
iOffset = 0;
}
hDlgModeless = PopFindFindDlg(hwnd);
return 0;
case IDM_SEARCH_NEXT:
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iOffset);
if (iStart == iOffset)
{
iOffset = 0;
}
if (PopFindValidFind())
PopFindNextText(hwndEdit, &iOffset);
else
hDlgModeless = PopFindFindDlg(hwnd);
return 0;
case IDM_SEARCH_REPLACE:
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iOffset);
if (iStart == iOffset)
{
iOffset = 0;
}
hDlgModeless = PopFindReplaceDlg(hwnd);
return 0;
case IDM_FORMAT_FONT:
if (PopFontChooseFont(hwnd))
PopFontSetFont(hwndEdit);
return 0;
case IDM_HELP:
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:
if (message == messageFindReplace)
{
pfr = (LPFINDREPLACE)lParam;
if (pfr->Flags&FR_DIALOGTERM)
{
hDlgModeless = NULL;
}
if (pfr->Flags&FR_FINDNEXT)
{
if (!PopFindFindText(hwndEdit, &iOffset, pfr))
{
OkMessage(hwnd, TEXT("Text not found!"), TEXT("\0"));
}
}
if (pfr->Flags&FR_REPLACE || pfr->Flags&FR_REPLACE)
{
if (!PopFindReplaceText(hwndEdit, &iOffset, pfr))
{
OkMessage(hwnd, TEXT("Text not found!"),TEXT("\0"));
}
}
if (pfr->Flags&FR_REPLACEALL)
{
while (PopFindReplaceText(hwndEdit, &iOffset, pfr));
}
return 0;
}
break;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}
POPFILE.cpp
#include <Windows.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 pstrFileName, PTSTR pstrTitleName)
{
ofn.hwndOwner = hwnd;
ofn.lpstrFile = pstrFileName;
ofn.lpstrFileTitle = pstrTitleName;
ofn.Flags = OFN_OVERWRITEPROMPT;
return GetSaveFileName(&ofn);
}
BOOL PopFileRead(HWND hwndEdit, PTSTR pstrFileName)
{
BYTE bySwap;
DWORD dwByteRead;
HANDLE hFile;
int i, iFileLength, iUniTest;
PBYTE pBuffer, pText, pConv;
if (INVALID_HANDLE_VALUE == (hFile = CreateFile(pstrFileName, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL)))
{
return false;
}
iFileLength = GetFileSize(hFile, NULL);
pBuffer =(PBYTE) malloc(iFileLength + 2);
ReadFile(hFile, pBuffer, iFileLength, &dwByteRead, 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;
}
}
pConv = (PBYTE)malloc(iFileLength + 2);
#ifndef UNICODE
WideCharToMultiByte(CP_ACP, 0, (PWSTR)pText, -1, (LPSTR)pConv, iFileLength + 2, NULL, NULL);
#else
lstrcpy((PTSTR)pConv, (PTSTR)pText);
#endif
}
else
{
pText = pBuffer;
pConv =(PBYTE) malloc(2 * iFileLength + 2);
#ifdef UNICODE
MultiByteToWideChar(CP_ACP, 0, (LPCCH)pText, -1, (PTSTR)pConv, iFileLength + 1);
#else
lstrcpy((PTSTR)pConv, (PTSTR)pText);
#endif
}
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;
if (INVALID_HANDLE_VALUE == (hFile = CreateFile(pstrFileName, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, 0, NULL)))
{
return FALSE;
}
iLength = GetWindowTextLength(hwndEdit);
pstrBuffer = (PTSTR)malloc((iLength + 1)*sizeof(TCHAR));
if (!pstrBuffer)
{
CloseHandle(hFile);
return FALSE;
}
#ifdef UNICODE
WriteFile(hFile, &wByteOrderMark, 2, &dwBytesWritten, NULL);
#endif
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;
}
POPFIND.cpp
#include<Windows.h>
#include<tchar.h>
#define MAX_STRING_LEN 256
static TCHAR szFindText[MAX_STRING_LEN];
static TCHAR szReplText[MAX_STRING_LEN];
HWND PopFindFindDlg(HWND hwnd)
{
static FINDREPLACE fr;
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;
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;
iLength = GetWindowTextLength(hwndEdit);
if (NULL == (pstrDoc = (PTSTR)malloc((iLength + 1)*sizeof(TCHAR))))
{
return FALSE;
}
GetWindowText(hwndEdit, pstrDoc, iLength + 1);
pstrPos = _tcsstr(pstrDoc + *piSearchOffset, pfr->lpstrFindWhat);
free(pstrDoc);
if (pstrPos == NULL)
return FALSE;
iPos = pstrPos - pstrDoc;
*piSearchOffset = iPos + lstrlen(pfr->lpstrFindWhat);
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)
{
if (!PopFindFindText(hwndEdit, piSearchOffset, pfr))
{
return FALSE;
}
SendMessage(hwndEdit, EM_REPLACESEL, 0, (LPARAM)pfr->lpstrReplaceWith);
return TRUE;
}
BOOL PopFindValidFind(void)
{
return *szFindText != '\0';
}
POPFONT.cpp
#include <Windows.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);
}
POPPRNT0.cpp
#include <windows.h>
BOOL PopPrntPrintFile(HINSTANCE hInst, HWND hwnd, HWND hwndEdit,
PTSTR pstrTitleName)
{
return FALSE;
}
poppad.rc
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
#include "winres.h"
#undef APSTUDIO_READONLY_SYMBOLS
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#ifdef APSTUDIO_INVOKED
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif
ABOUTBOX DIALOGEX 32, 32, 183, 102
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,66,80,50,14
ICON "POPPAD",IDC_STATIC,7,7,20,20
CTEXT "PopPad",IDC_STATIC,40,12,100,8
CTEXT "Popup Editor for Windows",IDC_STATIC,7,40,175,8
CTEXT "(c) Charles Petzold,1998",IDC_STATIC,7,52,175,8
END
PRINTDLGBOX DIALOGEX 32, 32, 186, 95
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "PopPad"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
PUSHBUTTON "Cancel",IDCANCEL,67,74,50,14
CTEXT "Seeding",IDC_STATIC,8,8,172,8
CTEXT "",IDC_FILENAME,8,28,172,8
LTEXT "tp print spooler",IDC_STATIC,8,48,172,8
END
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
"ABOUTBOX", DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 179
TOPMARGIN, 7
BOTTOMMARGIN, 88
END
"PRINTDLGBOX", DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 179
TOPMARGIN, 7
BOTTOMMARGIN, 88
END
END
#endif
ABOUTBOX AFX_DIALOG_LAYOUT
BEGIN
0
END
PRINTDLGBOX AFX_DIALOG_LAYOUT
BEGIN
0
END
POPPAD MENU
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 "&Edit"
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 "&Search"
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 "&Help"
BEGIN
MENUITEM "&Help", IDM_HELP
MENUITEM "&About PopPad...", IDM_APP_ABOUT
END
END
POPPAD ACCELERATORS
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_HELP, 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
POPPAD ICON "POPPAD.ICO"
#endif
#ifndef APSTUDIO_INVOKED
#endif
resource.h
#define IDI_ICON1 107
#define IDC_FILENAME 1001
#define ID_FILE_NEW 40001
#define ID_FILE_OPEN 40002
#define ID_FILE_SAVE 40003
#define ID_FILE_PRINT 40004
#define ID_FILE_EXIT 40005
#define ID_EDIT_UNDO 40006
#define ID_EDIT_CUT 40007
#define ID_EDIT_COPY 40008
#define ID_EDIT_PASTE 40009
#define ID_EDIT_DELETE 40010
#define ID_Menu 40011
#define ID_SEARCH_FIND 40012
#define ID_SEARCH_FINDNEXT 40013
#define ID_SEARCH_REPLACE 40014
#define ID_FORMAT_FONT 40015
#define ID_HELP_HELP 40016
#define ID_HELP_ABOUTPOPPAD 40017
#define IDM_FILE_NEW 40018
#define IDM_FILE_OPEN 40019
#define IDM_FILE_SAVE 40020
#define IDM_FILE_PRINT 40021
#define IDM_APP_EXIT 40022
#define ID_Menu40023 40023
#define ID_Menu40024 40024
#define ID_Menu40025 40025
#define IDM_FILE_SAVE_AS 40026
#define IDM_EDIT_UNDO 40027
#define IDM_EDIT_CUT 40028
#define IDM_EDIT_COPY 40029
#define IDM_EDIT_PASTE 40030
#define IDM_EDIT_CLEAR 40031
#define IDM_EDIT_SELECT_ALL 40032
#define IDM_SEARCH_FIND 40033
#define IDM_SEARCH_NEXT 40034
#define IDM_SEARCH_REPLACE 40035
#define IDM_FORMAT_FONT 40036
#define IDM_HELP 40037
#define IDM_APP_ABOUT 40038
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 108
#define _APS_NEXT_COMMAND_VALUE 40056
#define _APS_NEXT_CONTROL_VALUE 1002
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif