//
#include "stdafx.h"
-#include "nlite.h"
+#include "nlite_include.h"
+using namespace nlite;
+CAppModule _Module;
-#define MAX_LOADSTRING 100
-// \83O\83\8d\81[\83o\83\8b\95Ï\90\94:
-HINSTANCE hInst; // \8c»\8dÝ\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X
-TCHAR szTitle[MAX_LOADSTRING]; // \83^\83C\83g\83\8b \83o\81[\82Ì\83e\83L\83X\83g
-TCHAR szWindowClass[MAX_LOADSTRING]; // \83\81\83C\83\93 \83E\83B\83\93\83h\83E \83N\83\89\83X\96¼
-// \82±\82Ì\83R\81[\83h \83\82\83W\83\85\81[\83\8b\82É\8aÜ\82Ü\82ê\82é\8aÖ\90\94\82Ì\90é\8c¾\82ð\93]\91\97\82µ\82Ü\82·:
-ATOM MyRegisterClass(HINSTANCE hInstance);
-BOOL InitInstance(HINSTANCE, int);
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
-INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
-int APIENTRY _tWinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPTSTR lpCmdLine,
- int nCmdShow)
+
+
+static WSAData wsaData; //winsockdata
+static HINTERNET hInternet = NULL;
+
+static BOOL InitializeNlite(); //\83A\83v\83\8a\83P\81[\83V\83\87\83\93\8f\89\8aú\89»
+static VOID FinalizeNlite(); //\83A\83v\83\8a\83P\81[\83V\83\87\83\93\8fI\97¹\8f\88\97\9d
+static CNliteMainFrame wnd; //\83\81\83C\83\93\83t\83\8c\81[\83\80\83E\83B\83\93\83h\83E
+
+//\83\81\83C\83\93\8aÖ\90\94
+int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE,
+ LPTSTR lpCmdLine, int nCmdShow)
{
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
-
- // TODO: \82±\82±\82É\83R\81[\83h\82ð\91}\93ü\82µ\82Ä\82\82¾\82³\82¢\81B
- MSG msg;
- HACCEL hAccelTable;
-
- // \83O\83\8d\81[\83o\83\8b\95¶\8e\9a\97ñ\82ð\8f\89\8aú\89»\82µ\82Ä\82¢\82Ü\82·\81B
- LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadString(hInstance, IDC_NLITE, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
-
- // \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82Ì\8f\89\8aú\89»\82ð\8eÀ\8ds\82µ\82Ü\82·:
- if (!InitInstance (hInstance, nCmdShow))
- {
- return FALSE;
- }
+ HINSTANCE hRich = LoadLibrary(CRichEditCtrl::GetLibraryName());
+ int nRet = -1;
+ try{
+
+ //
+ //\83A\83v\83\8a\83P\83P\81[\83V\83\87\83\93\8f\89\8aú\89»\8f\88\97\9d
+ //
+ HRESULT hRes = ::CoInitialize(NULL);
+ ATLASSERT(SUCCEEDED(hRes));
+ AtlInitCommonControls(ICC_COOL_CLASSES | ICC_WIN95_CLASSES);
+ GUID guid;
+ if(_Module.Init(NULL, hInstance,&guid) != S_OK){
+ throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
+ }
- hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_NLITE));
+ AtlAxWinInit();
- // \83\81\83C\83\93 \83\81\83b\83Z\81[\83W \83\8b\81[\83v:
- while (GetMessage(&msg, NULL, 0, 0))
- {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
+ if(InitializeNlite() != TRUE){
+ throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
}
- }
- return (int) msg.wParam;
-}
+ g_speaker.SynthesisAsync(TEXT("\83e\83X\83g\83R\83\81\83\93\83g"));
+
+ //\83\81\83b\83Z\81[\83W\83\8b\81[\83v\93o\98^
+ CMessageLoop theLoop;
+ _Module.AddMessageLoop(&theLoop);
-//
-// \8aÖ\90\94: MyRegisterClass()
-//
-// \96Ú\93I: \83E\83B\83\93\83h\83E \83N\83\89\83X\82ð\93o\98^\82µ\82Ü\82·\81B
-//
-// \83R\83\81\83\93\83g:
-//
-// \82±\82Ì\8aÖ\90\94\82¨\82æ\82Ñ\8eg\82¢\95û\82Í\81A'RegisterClassEx' \8aÖ\90\94\82ª\92Ç\89Á\82³\82ê\82½
-// Windows 95 \82æ\82è\91O\82Ì Win32 \83V\83X\83e\83\80\82Æ\8cÝ\8a·\82³\82¹\82é\8fê\8d\87\82É\82Ì\82Ý\95K\97v\82Å\82·\81B
-// \83A\83v\83\8a\83P\81[\83V\83\87\83\93\82ª\81A\8aÖ\98A\95t\82¯\82ç\82ê\82½
-// \90³\82µ\82¢\8c`\8e®\82Ì\8f¬\82³\82¢\83A\83C\83R\83\93\82ð\8eæ\93¾\82Å\82«\82é\82æ\82¤\82É\82·\82é\82É\82Í\81A
-// \82±\82Ì\8aÖ\90\94\82ð\8cÄ\82Ñ\8fo\82µ\82Ä\82\82¾\82³\82¢\81B
-//
-ATOM MyRegisterClass(HINSTANCE hInstance)
-{
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_NLITE));
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = MAKEINTRESOURCE(IDC_NLITE);
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
-
- return RegisterClassEx(&wcex);
-}
+ //\83\81\83C\83\93\83E\83B\83\93\83h\83E\8f\89\8aú\89»
+ wnd.Initialize(localAppDataPath);
+ wnd.CreateEx(0,0,WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN);
-//
-// \8aÖ\90\94: InitInstance(HINSTANCE, int)
-//
-// \96Ú\93I: \83C\83\93\83X\83^\83\93\83X \83n\83\93\83h\83\8b\82ð\95Û\91¶\82µ\82Ä\81A\83\81\83C\83\93 \83E\83B\83\93\83h\83E\82ð\8dì\90¬\82µ\82Ü\82·\81B
-//
-// \83R\83\81\83\93\83g:
-//
-// \82±\82Ì\8aÖ\90\94\82Å\81A\83O\83\8d\81[\83o\83\8b\95Ï\90\94\82Å\83C\83\93\83X\83^\83\93\83X \83n\83\93\83h\83\8b\82ð\95Û\91¶\82µ\81A
-// \83\81\83C\83\93 \83v\83\8d\83O\83\89\83\80 \83E\83B\83\93\83h\83E\82ð\8dì\90¬\82¨\82æ\82Ñ\95\\8e¦\82µ\82Ü\82·\81B
-//
-BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
-{
- HWND hWnd;
+ //\83\81\83C\83\93\83E\83B\83\93\83h\83E\95\\8e¦
+ wnd.ShowWindow(nCmdShow);
+ wnd.UpdateWindow();
- hInst = hInstance; // \83O\83\8d\81[\83o\83\8b\95Ï\90\94\82É\83C\83\93\83X\83^\83\93\83X\8f\88\97\9d\82ð\8ai\94[\82µ\82Ü\82·\81B
+ //\97]\95ª\82É\8am\95Û\82µ\82Ä\82¢\82é\83q\81[\83v\82ð\8aJ\95ú
+ _heapmin();
- hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
- if (!hWnd)
- {
- return FALSE;
- }
+ //\83\81\83b\83Z\81[\83W\83\8b\81[\83v\8aJ\8en
+ nRet = theLoop.Run();
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd);
+ //\8fI\97¹\8cã\83\81\83\82\83\8a\83`\83F\83b\83N
+ vcassert(_heapchk() == _HEAPOK,TEXT("\83q\81[\83v\83G\83\89\81[\82Å\82·"));
- return TRUE;
+ goto nliteend;
+
+ } catch(nlite::Exception &e){
+
+ UnexpectedErrorMessageShow(TEXT("\83n\83\93\83h\83\8b\82³\82ê\82Ä\82¢\82È\82¢\83G\83\89\81["),e.what(),e.getLineNo(),e.getFileName(),e.getFunctionName());
+
+
+ goto nlitefinally;
+ } catch(nlib::Exception &e){
+
+ UnexpectedErrorMessageShow(TEXT("nlib\82Å\83n\83\93\83h\83\8b\82³\82ê\82Ä\82¢\82È\82¢\83G\83\89\81["),e.what(),e.getLineNo(),e.getFileName(),e.getFunctionName());
+
+ goto nlitefinally;
+ }catch(std::exception &e){
+ UnexpectedErrorMessageShow(TEXT("\83n\83\93\83h\83\8b\82³\82ê\82Ä\82¢\82È\82¢\83G\83\89\81["),CComBSTR(e.what()),-1,TEXT("\94\90¶\83t\83@\83C\83\8b\82ª\93Á\92è\8fo\97\88\82Ü\82¹\82ñ"),TEXT("\94\90¶\8aÖ\90\94\82ª\93Á\92è\82Å\82«\82Ü\82¹\82ñ"));
+
+
+
+ goto nlitefinally;
+ }
+
+nlitefinally:
+ wnd.OnException();
+ wnd.DestroyWindow();
+ FreeLibrary(hRich);
+
+nliteend:
+
+ _Module.RemoveMessageLoop();
+ FinalizeNlite();
+ _Module.Term();
+ ::CoUninitialize();
+
+ return nRet;
}
-//
-// \8aÖ\90\94: WndProc(HWND, UINT, WPARAM, LPARAM)
-//
-// \96Ú\93I: \83\81\83C\83\93 \83E\83B\83\93\83h\83E\82Ì\83\81\83b\83Z\81[\83W\82ð\8f\88\97\9d\82µ\82Ü\82·\81B
-//
-// WM_COMMAND - \83A\83v\83\8a\83P\81[\83V\83\87\83\93 \83\81\83j\83\85\81[\82Ì\8f\88\97\9d
-// WM_PAINT - \83\81\83C\83\93 \83E\83B\83\93\83h\83E\82Ì\95`\89æ
-// WM_DESTROY - \92\86\8e~\83\81\83b\83Z\81[\83W\82ð\95\\8e¦\82µ\82Ä\96ß\82é
-//
-//
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- int wmId, wmEvent;
- PAINTSTRUCT ps;
- HDC hdc;
-
- switch (message)
- {
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- // \91I\91ð\82³\82ê\82½\83\81\83j\83\85\81[\82Ì\89ð\90Í:
- switch (wmId)
- {
- case IDM_ABOUT:
- DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
- break;
- case IDM_EXIT:
- DestroyWindow(hWnd);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
+static BOOL InitializeNlite(){
+
+ BOOL rslt = FALSE;
+
+ try{
+
+ nlite::appInfo = &CApplicationInfo::getInstance();
+ INT_PTR err;
+ INT_PTR count = 0;
+
+ //WSAData\82ð\8f\89\8aú\89»
+ while((err = WSAStartup(MAKEWORD(2,0),&wsaData)) == WSASYSNOTREADY){
+
+ count++;
+ if(count >= 5)break;
+ Sleep(500);
+
+
+
}
- break;
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- // TODO: \95`\89æ\83R\81[\83h\82ð\82±\82±\82É\92Ç\89Á\82µ\82Ä\82\82¾\82³\82¢...
- EndPaint(hWnd, &ps);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
-}
-// \83o\81[\83W\83\87\83\93\8fî\95ñ\83{\83b\83N\83X\82Ì\83\81\83b\83Z\81[\83W \83n\83\93\83h\83\89\81[\82Å\82·\81B
-INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
-{
- UNREFERENCED_PARAMETER(lParam);
- switch (message)
- {
- case WM_INITDIALOG:
- return (INT_PTR)TRUE;
-
- case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));
- return (INT_PTR)TRUE;
+ if(err != ERROR_SUCCESS){
+
+ throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
}
- break;
+
+ //\83A\83v\83\8a\83P\81[\83V\83\87\83\93\8fî\95ñ\83C\83\93\83X\83^\83\93\83X\90¶\90¬
+ const CApplicationInfo &appInfo = CApplicationInfo::getInstance();
+ CNLiteString userAgent;
+ userAgent = appInfo.getProcuctName();
+ userAgent += TEXT("/");
+ userAgent += appInfo.getProductVersion();
+
+
+
+ //HTTP\83I\83u\83W\83F\83N\83g\90¶\90¬
+ hInternet = WinHttpOpen(userAgent,WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,(LPCWSTR)WINHTTP_NO_PROXY_NAME,(LPCWSTR)WINHTTP_NO_PROXY_BYPASS,0);
+
+ if(hInternet == NULL){
+
+ throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
+
+ }
+
+ //nlib\82Ì\8f\89\8aú\89»
+ InitializeNLIB(hInternet);
+
+ //\83\8d\81[\83J\83\8b\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83t\83H\83\8b\83_\8c\9f\8dõ
+ if(SHGetFolderPathW(0,CSIDL_LOCAL_APPDATA,0,SHGFP_TYPE_CURRENT,localAppDataPath) != S_OK){
+
+ throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
+ }
+
+
+ SystemParametersInfo (SPI_SETLISTBOXSMOOTHSCROLLING,FALSE,FALSE,0);
+
+
+
+ if(SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appFolderPath) != S_OK){
+
+ throw AppInitException(__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__));
+ }
+ ncvAppSettingPath = appFolderPath;
+ ncvAppSettingPath += TEXT("\\posite-c\\NiconamaCommentViewer\\AppSetting.xml");
+ rslt = TRUE;
+ }catch (AppInitException e){
+
+ rslt = FALSE;
+
}
- return (INT_PTR)FALSE;
+
+
+ return rslt;
+}
+
+
+VOID FinalizeNlite(){
+
+ //\83\81\83C\83\93\83t\83\8c\81[\83\80\83E\83B\83\93\83h\83E\8cã\8f\88\97\9d
+ wnd.Finalaize();
+
+ //nlib\8cã\8f\88\97\9d
+ FinalizeNLIB();
+
+ //HTTP\83I\83u\83W\83F\83N\83g\8aJ\95ú
+ WinHttpCloseHandle(hInternet);
+
+ //winsock\8aJ\95ú
+ WSACleanup();
+
+ return;
}
+