OSDN Git Service

Add menu of "New". Create new window.
authorDeflis <deflis@gmail.com>
Sun, 21 Mar 2010 15:58:47 +0000 (00:58 +0900)
committerDeflis <deflis@gmail.com>
Sun, 21 Mar 2010 15:58:47 +0000 (00:58 +0900)
ckw.h
main.cpp
misc.cpp
rsrc.h

diff --git a/ckw.h b/ckw.h
index 5a9a7ec..76d2fa1 100644 (file)
--- a/ckw.h
+++ b/ckw.h
@@ -29,6 +29,7 @@ extern DWORD  gBorderSize;
 extern CONSOLE_SCREEN_BUFFER_INFO* gCSI;
 extern CHAR_INFO*      gScreen;
 BOOL WINAPI ReadConsoleOutput_Unicode(HANDLE,CHAR_INFO*,COORD,COORD,SMALL_RECT*);
+void   makeNewWindow();
 
 /* selection.cpp */
 BOOL   selectionGetArea(SMALL_RECT& sr);
index 40c93a8..61badbf 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1086,9 +1086,11 @@ static BOOL initialize()
                return(FALSE);
        }
 
+       /*
        wchar_t path[MAX_PATH+1];
        GetSystemDirectory(path, MAX_PATH);
        SetCurrentDirectory(path);
+       */
        return(TRUE);
 }
 
@@ -1156,4 +1158,24 @@ int APIENTRY wWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR lpCmdLine, int nC
        return(0);
 }
 
+/* \90V\8bK\83E\83C\83\93\83h\83E\82Ì\8dì\90¬ */
+void makeNewWindow()
+{
+       LPWSTR cd = new TCHAR[MAX_PATH+1];
+       GetCurrentDirectory(MAX_PATH, cd);
+
+       STARTUPINFO si;
+       ZeroMemory(&si, sizeof(si));
+       si.cb = sizeof(si);
+
+       PROCESS_INFORMATION pi;
+       ZeroMemory(&pi, sizeof(pi));
+       if(CreateProcess(NULL, GetCommandLine(), NULL, NULL, FALSE, 0,
+                                          NULL, NULL, &si, &pi)){
+               // \8eg\97p\82µ\82È\82¢\82Ì\82Å\81C\82·\82®\82É\83N\83\8d\81[\83Y\82µ\82Ä\82æ\82¢
+               CloseHandle(pi.hProcess);
+               CloseHandle(pi.hThread);
+       }
+}
+
 /* EOF */
index 74ae7c9..a594ba6 100644 (file)
--- a/misc.cpp
+++ b/misc.cpp
@@ -162,8 +162,8 @@ void        sysmenu_init(HWND hWnd)
        mii.fMask = MIIM_TYPE | MIIM_ID;
 
        mii.fType = MFT_STRING;
-       mii.wID = IDM_ABOUT;
-       mii.dwTypeData = L"About (&A)";
+       mii.wID = IDM_NEW;
+       mii.dwTypeData = L"New (&N)";
        mii.cch = (UINT) wcslen(mii.dwTypeData);
        InsertMenuItem(hMenu, SC_CLOSE, FALSE, &mii);
 
@@ -174,6 +174,18 @@ void       sysmenu_init(HWND hWnd)
        mii.dwTypeData = 0;
        mii.cch = 0;
        InsertMenuItem(hMenu, SC_CLOSE, FALSE, &mii);
+
+       mii.fType = MFT_STRING;
+       mii.wID = IDM_ABOUT;
+       mii.dwTypeData = L"About (&A)";
+       mii.cch = (UINT) wcslen(mii.dwTypeData);
+       InsertMenuItem(hMenu, SC_CLOSE, FALSE, &mii);
+
+       mii.fType = MFT_SEPARATOR;
+       mii.wID = 0;
+       mii.dwTypeData = 0;
+       mii.cch = 0;
+       InsertMenuItem(hMenu, SC_CLOSE, FALSE, &mii);
 }
 
 void    get_directory_path(wchar_t *path)
@@ -272,6 +284,9 @@ BOOL        onSysCommand(HWND hWnd, DWORD id)
                          hWnd,
                          AboutDlgProc);
                return(TRUE);
+       case IDM_NEW:
+               makeNewWindow();
+               return(TRUE);
        }
     if(IDM_CONFIG_SELECT < id && id <= IDM_CONFIG_SELECT_MAX) {
         return onConfigMenuCommand(hWnd, id);
diff --git a/rsrc.h b/rsrc.h
index a2c40d3..4a1fe9d 100644 (file)
--- a/rsrc.h
+++ b/rsrc.h
@@ -10,4 +10,4 @@
 #define IDM_CONFIG_SELECT_2    50002
 /* ... 50003, 50004, ...  */
 #define IDM_CONFIG_SELECT_MAX  50100
-
+#define IDM_NEW        60001