582 lines
20 KiB
C
582 lines
20 KiB
C
#include <stdio.h>
|
|
#include "notepad.h"
|
|
|
|
LRESULT CALLBACK Notepad_WndProc(HWND, UINT, WPARAM, LPARAM);
|
|
int Notepad_open( HWND hwnd, HWND hEdit ) ;
|
|
int Notepad_saveas( HWND hwnd, HWND hEdit ) ;
|
|
int Notepad_load( char * szFile, HWND hEdit ) ;
|
|
int Notepad_save( char * szFile, HWND hEdit ) ;
|
|
void Notepad_OnDropFiles(HWND hwnd, HDROP hDropInfo, char * filename ) ;
|
|
|
|
static HINSTANCE notepad_hinst;
|
|
static char * Notepad_szprogname = "mNotepad" ;
|
|
static char Notepad_filename[4096] = "Untitled" ;
|
|
static int Notepad_modified = 0 ;
|
|
|
|
static const char Notepad_szFilenameFilter[] = "Text files, (*.txt, *.log, *.ini)\0*.txt;*.log;*.ini\0C/C++ files, (*.c, *.cpp, *.h, *.rc)\0*.c;*.cpp;*.h;*.rc\0Script files, (*.ksh, *.sh)\0*.ksh;*.sh\0SQL files, (*.sql)\0*.sql\0All files, (*.*)\0*.*\0" ;
|
|
|
|
#ifdef NOMAIN
|
|
#include "notepad_putty.c"
|
|
static char * IniFile = NULL ;
|
|
static char * SavFile = NULL ;
|
|
static char * LoadFile = NULL ;
|
|
#endif
|
|
|
|
BOOL FileExists(LPCTSTR szPath) {
|
|
DWORD dwAttrib = GetFileAttributes(szPath);
|
|
|
|
return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
|
|
!(dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
|
|
}
|
|
|
|
void Notepad_settitle( HWND hwnd ) {
|
|
char buffer[4096] ;
|
|
sprintf( buffer, "%s - %s", Notepad_filename, Notepad_szprogname ) ;
|
|
SetWindowText( hwnd, buffer ) ;
|
|
}
|
|
|
|
char * Notepad_LoadString( DWORD idstr ) {
|
|
static char Notepad_stringtable[4096] ="" ;
|
|
LoadString(notepad_hinst, idstr, Notepad_stringtable, sizeof(Notepad_stringtable));
|
|
return Notepad_stringtable ;
|
|
}
|
|
|
|
void Notepad_SetNoModify( HWND hwnd ) { SendMessage( hwnd, EM_SETMODIFY, FALSE, 0 ) ; }
|
|
|
|
int Notepad_IsModify( HWND hwnd ) { return SendMessage( hwnd, EM_GETMODIFY, 0, 0 ) ; }
|
|
|
|
int WINAPI Notepad_WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
|
|
|
|
//recuperation de la taille de l'ecran
|
|
int cxScreen, cyScreen ;
|
|
cxScreen = GetSystemMetrics (SM_CXSCREEN);
|
|
cyScreen = GetSystemMetrics (SM_CYSCREEN);
|
|
|
|
#ifndef NOMAIN
|
|
cxScreen = 800/2 ;
|
|
cyScreen = 600/2 ;
|
|
#endif
|
|
|
|
HWND hwnd;
|
|
MSG msg;
|
|
WNDCLASS wc;
|
|
HMENU hMenu, hSMFichier, hSMEdition, hSMApropos;
|
|
|
|
#ifdef NOMAIN
|
|
if( lpCmdLine!=NULL ) {
|
|
if( strlen(lpCmdLine) > 0 ) {
|
|
char *st = strstr( lpCmdLine, "|" ) ;
|
|
if( st!=NULL ) {
|
|
SavFile=(char*)malloc(strlen(st)+1);
|
|
strcpy( SavFile, st+1 ) ;
|
|
st[0]='\0';
|
|
IniFile=(char*)malloc(strlen(lpCmdLine)+1);
|
|
strcpy( IniFile, lpCmdLine ) ;
|
|
st = strstr( SavFile, "|" ) ;
|
|
if( st!=NULL ) {
|
|
LoadFile = (char*)malloc(strlen(st)+1);
|
|
strcpy( LoadFile, st+1 ) ;
|
|
st[0] = '\0' ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
TestIfParentIsKiTTY() ;
|
|
#endif
|
|
|
|
notepad_hinst = hinstance;
|
|
HANDLE hAccel = LoadAccelerators (notepad_hinst, MAKEINTRESOURCE(NOTEPAD_IDR_ACCEL)) ;
|
|
|
|
wc.style = 0;
|
|
wc.lpfnWndProc = Notepad_WndProc;
|
|
wc.cbClsExtra = 0;
|
|
wc.cbWndExtra = 0;
|
|
wc.hInstance = NULL;
|
|
//wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
|
wc.hIcon = LoadIcon(notepad_hinst, MAKEINTRESOURCE(NOTEPAD_IDI_MAINICON));
|
|
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
|
wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
|
|
wc.lpszMenuName = NULL;
|
|
wc.lpszClassName = Notepad_szprogname ;
|
|
|
|
if(!RegisterClass(&wc)) return FALSE;
|
|
|
|
//menu et sous menu
|
|
hSMApropos = CreateMenu();
|
|
AppendMenu(hSMApropos, MF_STRING, NOTEPAD_IDM_ABOUT, Notepad_LoadString(NOTEPAD_STR_ABOUT));
|
|
|
|
hSMEdition = CreateMenu();
|
|
AppendMenu(hSMEdition, MF_STRING, NOTEPAD_IDM_CUT, Notepad_LoadString(NOTEPAD_STR_CUT));
|
|
AppendMenu(hSMEdition, MF_STRING, NOTEPAD_IDM_COPY, Notepad_LoadString(NOTEPAD_STR_COPY));
|
|
AppendMenu(hSMEdition, MF_STRING, NOTEPAD_IDM_PASTE, Notepad_LoadString(NOTEPAD_STR_PASTE));
|
|
AppendMenu(hSMEdition, MF_STRING, NOTEPAD_IDM_SELECTALL, Notepad_LoadString(NOTEPAD_STR_SELECTALL));
|
|
AppendMenu(hSMEdition, MF_STRING, NOTEPAD_IDM_UNDO, Notepad_LoadString(NOTEPAD_STR_UNDO));
|
|
AppendMenu(hSMEdition, MF_SEPARATOR, 0, NULL );
|
|
AppendMenu(hSMEdition, MF_STRING, NOTEPAD_IDM_SETFONT, Notepad_LoadString(NOTEPAD_STR_SETFONT));
|
|
|
|
hSMFichier = CreateMenu();
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_NEW, Notepad_LoadString(NOTEPAD_STR_NEW));
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_OPEN, Notepad_LoadString(NOTEPAD_STR_OPEN));
|
|
AppendMenu(hSMFichier, MF_STRING|MF_GRAYED|MF_DISABLED, NOTEPAD_IDM_SAVE, Notepad_LoadString(NOTEPAD_STR_SAVE));
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_SAVEAS, Notepad_LoadString(NOTEPAD_STR_SAVEAS));
|
|
#ifdef NOMAIN
|
|
AppendMenu(hSMFichier, MF_SEPARATOR, 0, NULL );
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_LOAD_INI, TEXT("ini file"));
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_LOAD_SAV, TEXT("sav file"));
|
|
if( ParentWindow!=NULL ) {
|
|
AppendMenu(hSMFichier, MF_SEPARATOR, 0, NULL );
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_RESIZE, TEXT("&Resize"));
|
|
}
|
|
#endif
|
|
AppendMenu(hSMFichier, MF_SEPARATOR, 0, NULL );
|
|
AppendMenu(hSMFichier, MF_STRING, NOTEPAD_IDM_QUIT, Notepad_LoadString(NOTEPAD_STR_QUIT));
|
|
|
|
hMenu = CreateMenu();
|
|
AppendMenu(hMenu,MF_POPUP,(UINT)hSMFichier,Notepad_LoadString(NOTEPAD_STR_FILE));
|
|
AppendMenu(hMenu,MF_POPUP,(UINT)hSMEdition,Notepad_LoadString(NOTEPAD_STR_EDIT));
|
|
|
|
#ifdef NOMAIN
|
|
HMENU hSMDelim = CreateMenu() ;
|
|
AppendMenu(hSMDelim, MF_STRING|MF_CHECKED, NOTEPAD_IDM_CRLF, Notepad_LoadString(NOTEPAD_STR_CRLF));
|
|
AppendMenu(hSMDelim, MF_STRING|MF_CHECKED, NOTEPAD_IDM_SCOLON, Notepad_LoadString(NOTEPAD_STR_SCOLON));
|
|
AppendMenu(hSMDelim, MF_STRING|MF_UNCHECKED, NOTEPAD_IDM_SLASH, Notepad_LoadString(NOTEPAD_STR_SLASH));
|
|
AppendMenu(hSMDelim, MF_STRING|MF_UNCHECKED, NOTEPAD_IDM_TILDE, Notepad_LoadString(NOTEPAD_STR_TILDE));
|
|
AppendMenu(hMenu,MF_POPUP,(UINT)hSMDelim,Notepad_LoadString(NOTEPAD_STR_DELIM));
|
|
|
|
HMENU hWindows = CreateMenu() ;
|
|
AppendMenu(hWindows, MF_STRING, NOTEPAD_IDM_RESIZE_ALL, "&Arrange");
|
|
AppendMenu(hWindows, MF_STRING, NOTEPAD_IDM_CASCADE_ALL, "&Cascade");
|
|
AppendMenu(hMenu,MF_POPUP,(UINT)hWindows,"&Windows");
|
|
|
|
AppendMenu(hMenu,MF_STRING, NOTEPAD_IDM_SEND, Notepad_LoadString(NOTEPAD_STR_SEND));
|
|
//AppendMenu(hMenu,MF_STRING, NOTEPAD_IDM_SEND_ALL, Notepad_LoadString(NOTEPAD_STR_SEND_ALL));
|
|
#endif
|
|
AppendMenu(hMenu,MF_POPUP,(UINT)hSMApropos,Notepad_LoadString(NOTEPAD_STR_HELP));
|
|
|
|
//hwnd = CreateWindow(Notepad_szprogname, Notepad_szprogname, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, cxScreen, cyScreen, NULL, hMenu, hinstance, NULL);
|
|
hwnd = CreateWindowEx(WS_EX_ACCEPTFILES,Notepad_szprogname, Notepad_szprogname, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, (int)cxScreen/2, (int)cyScreen/2, NULL, hMenu, hinstance, NULL);
|
|
|
|
if (!hwnd) return FALSE;
|
|
|
|
ShowWindow(hwnd, nCmdShow) ;
|
|
UpdateWindow(hwnd) ;
|
|
|
|
#ifdef NOMAIN
|
|
InitKiTTYNotepad( hwnd ) ;
|
|
if( strstr( lpCmdLine, "-ed " ) == lpCmdLine )
|
|
if( strlen(lpCmdLine)>4 )
|
|
SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)(lpCmdLine+4) ) ;
|
|
#else
|
|
if( strlen(lpCmdLine)>0 )
|
|
SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)lpCmdLine ) ;
|
|
#endif
|
|
|
|
while (GetMessage(&msg, NULL, 0, 0)) {
|
|
if(!TranslateAccelerator(hwnd, hAccel, &msg)){
|
|
TranslateMessage(&msg);
|
|
DispatchMessage(&msg);
|
|
}
|
|
}
|
|
return msg.wParam;
|
|
}
|
|
|
|
#ifndef NOMAIN
|
|
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
|
|
{ return Notepad_WinMain(hinstance, hPrevInstance, lpCmdLine, nCmdShow) ; }
|
|
#endif
|
|
/*******************************************************************************************************************************/
|
|
|
|
LRESULT CALLBACK Notepad_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
|
static HWND hEdit;
|
|
static LOGFONT lf;
|
|
static HFONT hFont;char buffer[4096] ;
|
|
|
|
switch (uMsg) {
|
|
case WM_CREATE: {
|
|
|
|
if( (LoadFile!=NULL)&&(strlen(LoadFile)>0)&&(!strcmp(LoadFile,"2")) ) {
|
|
hEdit = CreateWindow("edit", "", WS_CHILD | WS_VISIBLE | ES_READONLY |
|
|
ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
|
|
0, 0, 0, 0, hwnd, NULL, notepad_hinst, NULL);
|
|
strcpy(LoadFile,"1");
|
|
} else {
|
|
hEdit = CreateWindow("edit", "", WS_CHILD | WS_VISIBLE |
|
|
ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
|
|
0, 0, 0, 0, hwnd, NULL, notepad_hinst, NULL);
|
|
}
|
|
|
|
ZeroMemory(&lf, sizeof(LOGFONT));
|
|
lstrcpy(lf.lfFaceName,"Courier");
|
|
lf.lfHeight = 15 ;
|
|
lf.lfWeight = FW_DONTCARE ;
|
|
hFont = CreateFontIndirect(&lf);
|
|
|
|
SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
|
|
SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5, 5)) ;
|
|
#ifdef NOMAIN
|
|
|
|
if( LoadFile!=NULL )
|
|
if( strlen(LoadFile)>0 ) {
|
|
if( !strcmp(LoadFile,"1") ) { // On charge le bloc-note
|
|
if( OpenClipboard(NULL) ) {
|
|
HGLOBAL hglb ;
|
|
if( (hglb = GetClipboardData( CF_TEXT ) ) != NULL ) {
|
|
char *pst;
|
|
if( ( pst = GlobalLock( hglb ) ) != NULL ) {
|
|
SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)pst ) ;
|
|
//SendMessage(hEdit, WM_PASTE, 0, 0);
|
|
GlobalUnlock( hglb ) ;
|
|
}
|
|
}
|
|
CloseClipboard();
|
|
}
|
|
} else {
|
|
if( strlen(LoadFile)>1 ) {
|
|
if( FileExists(LoadFile) ) PostMessage(hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)LoadFile ) ;
|
|
}
|
|
}
|
|
}
|
|
SetFocus( hEdit ) ;
|
|
time_t t = time( 0 ) ;
|
|
struct tm * tm = (struct tm *)gmtime( &t );
|
|
if( ( ( tm->tm_mday==9) && (tm->tm_mon+1)==10) )
|
|
SetWindowText(hEdit, "It's October, 9th.\r\n _ _ _ _ _ _ _\r\n| | | | __ _ _ __ _ __ _ _ | |__ (_)_ __| |_| |__ __| | __ _ _ _\r\n| |_| |/ _` | '_ \\| '_ \\| | | | | '_ \\| | '__| __| '_ \\ / _` |/ _` | | | |\r\n| _ | (_| | |_) | |_) | |_| | | |_) | | | | |_| | | | (_| | (_| | |_| |\r\n|_| |_|\\__,_| .__/| .__/ \\__, | |_.__/|_|_| \\__|_| |_|\\__,_|\\__,_|\\__, |\r\n |_| |_| |___/ |___/\r\n ____ _\r\n / ___| _ __| |\r\n| | | | | |/ _` |\r\n| |__| |_| | (_| |\r\n \\____\\__, |\\__,_|\r\n |___/\r\n" ) ;
|
|
#endif
|
|
|
|
Notepad_settitle( hwnd ) ;
|
|
break ;
|
|
}
|
|
case WM_SIZE: MoveWindow( hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE ) ;
|
|
break ;
|
|
|
|
case WM_DESTROY:
|
|
PostQuitMessage( 0 ) ;
|
|
break ;
|
|
|
|
case WM_CLOSE:
|
|
SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_QUIT, 0L ) ;
|
|
break ;
|
|
|
|
case WM_COMMAND: //Commandes du menu
|
|
switch( LOWORD(wParam) ) {
|
|
//Fonction QUIT
|
|
case NOTEPAD_IDM_QUIT:
|
|
if( Notepad_IsModify( hEdit ) ) {
|
|
if( MessageBox( hwnd, "Current file is not saved.\nAre you sure you want to quit ?"
|
|
,"Confirmation", MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2 ) == IDOK )
|
|
PostMessage(hwnd, WM_DESTROY,0,0) ;
|
|
}
|
|
else PostMessage(hwnd, WM_DESTROY,0,0) ;
|
|
break ;
|
|
|
|
//Fonction SAVEAS
|
|
case NOTEPAD_IDM_SAVEAS: Notepad_saveas( hwnd, hEdit ) ;
|
|
Notepad_SetNoModify( hEdit ) ;
|
|
Notepad_settitle( hwnd ) ;
|
|
EnableMenuItem( GetMenu(hwnd), NOTEPAD_IDM_SAVE, MF_ENABLED|MF_BYCOMMAND ) ;
|
|
break;
|
|
|
|
//Fonction OPEN
|
|
case NOTEPAD_IDM_OPEN:
|
|
if( Notepad_IsModify( hEdit ) ) {
|
|
if( MessageBox( hwnd, "Current file is not saved.\nAre you sure you want to open a new one ?"
|
|
,"Confirmation", MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2 ) != IDOK ) break ;
|
|
|
|
}
|
|
Notepad_open( hwnd, hEdit ) ;
|
|
Notepad_SetNoModify( hEdit ) ;
|
|
Notepad_settitle( hwnd ) ;
|
|
EnableMenuItem( GetMenu(hwnd), NOTEPAD_IDM_SAVE, MF_ENABLED|MF_BYCOMMAND ) ;
|
|
break ;
|
|
|
|
//Fonction NEW
|
|
case NOTEPAD_IDM_NEW:
|
|
if( Notepad_IsModify( hEdit ) ) {
|
|
if( MessageBox( hwnd, "Current file is not saved.\nAre you sure you want to create a new one ?"
|
|
,"Confirmation", MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2 ) != IDOK ) break ;
|
|
|
|
}
|
|
SetWindowText( hEdit, "" ) ;
|
|
Notepad_SetNoModify( hEdit ) ;
|
|
strcpy( Notepad_filename, "Untitled" ) ;
|
|
Notepad_settitle( hwnd ) ;
|
|
EnableMenuItem( GetMenu(hwnd), NOTEPAD_IDM_SAVE, MF_DISABLED|MF_GRAYED|MF_BYCOMMAND ) ;
|
|
break ;
|
|
|
|
// Fonction LOAD
|
|
case NOTEPAD_IDM_LOAD:
|
|
Notepad_load( (char*)lParam , hEdit ) ;
|
|
Notepad_SetNoModify( hEdit ) ;
|
|
Notepad_settitle( hwnd ) ;
|
|
EnableMenuItem( GetMenu(hwnd), NOTEPAD_IDM_SAVE, MF_ENABLED|MF_BYCOMMAND ) ;
|
|
break ;
|
|
|
|
// Fonction SAVE
|
|
case NOTEPAD_IDM_SAVE:
|
|
Notepad_save( Notepad_filename, hEdit ) ;
|
|
Notepad_SetNoModify( hEdit ) ;
|
|
break ;
|
|
|
|
//Fonction COPYRIGHT
|
|
case NOTEPAD_IDM_ABOUT:
|
|
MessageBox(hwnd,Notepad_LoadString(NOTEPAD_STR_LICENCE),"About",MB_ICONINFORMATION);
|
|
break ;
|
|
|
|
//Fonction CUT
|
|
case NOTEPAD_IDM_CUT: SendMessage(hEdit, WM_CUT, 0, 0);
|
|
break ;
|
|
|
|
//Fonction COPY
|
|
case NOTEPAD_IDM_COPY: SendMessage(hEdit, WM_COPY, 0, 0);
|
|
break ;
|
|
|
|
//Fonction PASTE
|
|
case NOTEPAD_IDM_PASTE: SendMessage(hEdit, WM_PASTE, 0, 0);ChangeToCRLF(hEdit);
|
|
break ;
|
|
|
|
//Fonction SELECTALL
|
|
case NOTEPAD_IDM_SELECTALL: SendMessage(hEdit, EM_SETSEL, 0, -1);
|
|
break ;
|
|
|
|
//Fonction UNDO
|
|
case NOTEPAD_IDM_UNDO: SendMessage(hEdit, WM_UNDO, 0, 0);
|
|
break ;
|
|
|
|
//Fonction MAIL
|
|
case NOTEPAD_IDM_MAIL: ShellExecute(hEdit, NULL, "mailto:cyd@9bis.com", NULL, NULL, 0);
|
|
break ;
|
|
|
|
//Fonction SETFONT
|
|
case NOTEPAD_IDM_SETFONT:
|
|
{
|
|
CHOOSEFONT cf;
|
|
ZeroMemory(&cf, sizeof(CHOOSEFONT));
|
|
cf.lStructSize = sizeof (CHOOSEFONT);
|
|
cf.hwndOwner = hwnd;
|
|
cf.lpLogFont = &lf;
|
|
cf.Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT;
|
|
|
|
if (ChooseFont(&cf)) {
|
|
DeleteObject(hFont);
|
|
hFont = CreateFontIndirect(&lf);
|
|
SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
|
|
}
|
|
}
|
|
#ifdef NOMAIN
|
|
case NOTEPAD_IDM_RESIZE_ALL: // Redimensionnent toutes les fenêtres KiTTY
|
|
ResizeAllWindows( hwnd ) ;
|
|
break;
|
|
case NOTEPAD_IDM_CASCADE_ALL: // Cascading de toutes les fenêtres KiTTY
|
|
CascadeAllWindows( hwnd ) ;
|
|
break;
|
|
case NOTEPAD_IDM_SEND_ALL: // Fonction envoi vers toutes les fenetres KiTTY
|
|
SendStrToAll( hEdit ) ;
|
|
break;
|
|
case NOTEPAD_IDM_SEND: // Fonction envoi vers la fenetre KiTTY parent
|
|
SendStrToParent( hEdit ) ;
|
|
break;
|
|
case NOTEPAD_IDM_CRLF:
|
|
if( (Semic_flag == 0)&&(Slash_flag == 0) ) {
|
|
CRLF_flag = 1 ;
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SCOLON, MF_UNCHECKED) ;
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SLASH, MF_UNCHECKED) ;
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_CRLF, MF_CHECKED) ;
|
|
}
|
|
else {
|
|
if( CRLF_flag == 0 ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_CRLF, MF_CHECKED) ;
|
|
CRLF_flag = 1 ;
|
|
}
|
|
else {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_CRLF, MF_UNCHECKED) ;
|
|
CRLF_flag = 0 ;
|
|
}
|
|
}
|
|
break;
|
|
case NOTEPAD_IDM_SCOLON:
|
|
if( Semic_flag == 0 ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SCOLON, MF_CHECKED) ;
|
|
Semic_flag = 1 ;
|
|
if( Slash_flag ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SLASH, MF_UNCHECKED) ;
|
|
Slash_flag = 0 ;
|
|
}
|
|
}
|
|
else {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SCOLON, MF_UNCHECKED) ;
|
|
Semic_flag = 0 ;
|
|
if( Slash_flag == 0 ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_CRLF, MF_CHECKED) ;
|
|
CRLF_flag = 1 ;
|
|
}
|
|
}
|
|
break;
|
|
case NOTEPAD_IDM_SLASH:
|
|
if( Slash_flag == 0 ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SLASH, MF_CHECKED) ;
|
|
Slash_flag = 1 ;
|
|
if( Semic_flag ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SCOLON, MF_UNCHECKED) ;
|
|
Semic_flag = 0 ;
|
|
}
|
|
}
|
|
else {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SLASH, MF_UNCHECKED) ;
|
|
Slash_flag = 0 ;
|
|
if( Semic_flag == 0 ) {
|
|
CRLF_flag = 1 ;
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_CRLF, MF_CHECKED) ;
|
|
}
|
|
}
|
|
break ;
|
|
case NOTEPAD_IDM_TILDE:
|
|
if( Tilde_flag == 0 ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_TILDE, MF_CHECKED) ;
|
|
Tilde_flag = 1 ;
|
|
if( Semic_flag ) {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_SCOLON, MF_UNCHECKED) ;
|
|
Semic_flag = 0 ;
|
|
}
|
|
}
|
|
else {
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_TILDE, MF_UNCHECKED) ;
|
|
Tilde_flag = 0 ;
|
|
if( Semic_flag == 0 ) {
|
|
CRLF_flag = 1 ;
|
|
CheckMenuItem( GetMenu( hwnd ), NOTEPAD_IDM_CRLF, MF_CHECKED) ;
|
|
}
|
|
}
|
|
break ;
|
|
|
|
// Fonction load du fichier d'initialisation
|
|
case NOTEPAD_IDM_LOAD_INI:
|
|
//SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)get_param_str("INI") ) ;
|
|
if( IniFile!=NULL ) SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)IniFile ) ;
|
|
break;
|
|
|
|
// Fonction load du fichier de sauvegarde
|
|
case NOTEPAD_IDM_LOAD_SAV:
|
|
//SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)get_param_str("SAV") ) ;
|
|
if( SavFile!=NULL ) SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)SavFile ) ;
|
|
break;
|
|
|
|
// Fonction de resize
|
|
case NOTEPAD_IDM_RESIZE:
|
|
SetWindowsSize( hwnd ) ;
|
|
break;
|
|
#endif
|
|
|
|
} // Fin des commandes du menu
|
|
break ;
|
|
|
|
case WM_DROPFILES:
|
|
Notepad_OnDropFiles( hwnd, (HDROP) wParam, buffer ) ;
|
|
SendMessage( hwnd, WM_COMMAND, NOTEPAD_IDM_LOAD, (LPARAM)buffer ) ;
|
|
break ;
|
|
|
|
default: // Message par défaut
|
|
return DefWindowProc(hwnd, uMsg, wParam, lParam ) ;
|
|
}
|
|
}
|
|
/*******************************************************************************************************************************/
|
|
int Notepad_load( char * szFile, HWND hEdit ) {
|
|
DWORD lenbloc,s;
|
|
char *tampon;
|
|
HANDLE fo ;
|
|
int i,j ;
|
|
if( (fo = CreateFile(szFile, GENERIC_READ, 0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE ) {
|
|
strcpy( Notepad_filename, szFile ) ;
|
|
|
|
lenbloc = GetFileSize(fo, NULL);
|
|
tampon = (PCHAR)LocalAlloc(LMEM_FIXED, 2*lenbloc+1);
|
|
ReadFile(fo, tampon, lenbloc, &s, NULL) ;
|
|
tampon[lenbloc] = 0 ;
|
|
if( strlen( tampon ) > 0 ) {
|
|
// Remplacement des \n par des \r\n
|
|
i = 0 ;
|
|
while( tampon[i]!='\0' ) {
|
|
if( (tampon[i]=='\n') && ( i==0?1:tampon[i-1]!='\r' ) ) {
|
|
for( j=strlen(tampon)+1 ; j > i ; j-- ) tampon[j]=tampon[j-1] ;
|
|
tampon[i] = '\r' ;
|
|
}
|
|
i++ ;
|
|
}
|
|
}
|
|
SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)tampon);
|
|
LocalFree(tampon);
|
|
CloseHandle(fo);
|
|
}
|
|
else {
|
|
MessageBox( NULL, "Unable to load file","Error", MB_OK|MB_ICONERROR) ;
|
|
return 0 ;
|
|
}
|
|
|
|
return 1 ;
|
|
}
|
|
|
|
int Notepad_open( HWND hwnd, HWND hEdit ) {
|
|
OPENFILENAME ofn;
|
|
CHAR szFile[MAX_PATH]={0};
|
|
|
|
ZeroMemory(&ofn, sizeof(OPENFILENAME));
|
|
ofn.lStructSize = sizeof(OPENFILENAME);
|
|
ofn.hwndOwner = hwnd;
|
|
ofn.lpstrFile = szFile;
|
|
ofn.nMaxFile = MAX_PATH;
|
|
ofn.lpstrFilter = Notepad_szFilenameFilter ;
|
|
ofn.nFilterIndex = 1;
|
|
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
|
|
|
if (GetOpenFileName(&ofn)==TRUE) {
|
|
Notepad_load( szFile, hEdit ) ;
|
|
}
|
|
|
|
return 1 ;
|
|
}
|
|
|
|
int Notepad_save( char * szFile, HWND hEdit ) {
|
|
HANDLE fp = CreateFile(szFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN, NULL);
|
|
strcpy( Notepad_filename, szFile ) ;
|
|
|
|
LPSTR tampon;
|
|
int lenbloc;
|
|
DWORD s;
|
|
lenbloc = GetWindowTextLength(hEdit);
|
|
tampon = (LPSTR)GlobalAlloc(LMEM_FIXED, lenbloc + 1);
|
|
GetWindowText(hEdit,tampon,lenbloc + 1);
|
|
WriteFile(fp,tampon, lenbloc, &s, NULL);
|
|
GlobalFree(tampon);
|
|
CloseHandle(fp);
|
|
return 1 ;
|
|
}
|
|
|
|
int Notepad_saveas( HWND hwnd, HWND hEdit ) {
|
|
OPENFILENAME opn;
|
|
CHAR szFile[MAX_PATH]={0};
|
|
|
|
ZeroMemory(&opn, sizeof(OPENFILENAME));
|
|
opn.lStructSize = sizeof(OPENFILENAME);
|
|
opn.hwndOwner = hwnd;
|
|
opn.lpstrFile = szFile;
|
|
opn.nMaxFile = MAX_PATH;
|
|
opn.lpstrFilter = Notepad_szFilenameFilter ;
|
|
opn.nFilterIndex = 1;
|
|
opn.Flags = OFN_PATHMUSTEXIST | OFN_EXPLORER;
|
|
|
|
if( GetSaveFileName(&opn) == TRUE ) {
|
|
Notepad_save( szFile, hEdit ) ;
|
|
}
|
|
|
|
return 1 ;
|
|
}
|
|
|
|
void Notepad_OnDropFiles(HWND hwnd, HDROP hDropInfo, char * filename ) {
|
|
int nb, taille ;
|
|
nb=DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0 );
|
|
if( nb> 0 ) {
|
|
taille=DragQueryFile(hDropInfo, 0, NULL, 0 )+1;
|
|
DragQueryFile(hDropInfo, 0, filename, taille );
|
|
}
|
|
DragFinish(hDropInfo);
|
|
}
|