bool InitDirect3DApp::Init() { if (!cD3DApp::Init()) return false; // Init cEffects::InitAll(g_pD3DDevice); cRenderStates::InitAll(g_pD3DDevice); cInputLayouts::InitAll(g_pD3DDevice); // Camera Init g_pCameraManager->Init(MainWnd()); // MeshAdd //m_MeshList.push_back(new cBoxMesh()); //m_MeshList.push_back(new cGridMesh()); //m_MeshList.push_back(new cCylinder()); m_MeshList.push_back(new cWave(200, 200, 0.8f, 0.03f, 3.25f, 0.4f, &mTimer)); // All Mesh Init for each(auto item in m_MeshList) item->Init(); return true; }
appSCD_COMENTRYGET(eScdGraphicsCodes, pVal) { CDocComInfo DCI; DCI.m_DoWhat=CDocComInfo::DCI_GetCount; if (/*AfxGet*/MainWnd()->SendMessage(WMU_COM_CMD, ComCmd_DocCmd, (long)&DCI)!=0) { return Scd.ReturnH(E_FAIL); } long N=DCI.m_lCount; VARIANT* pVar = new VARIANT[N]; for(int i = 0; i < N; i++) { DCI.m_DoWhat=CDocComInfo::DCI_GetTitle; DCI.m_lIndex=i; if (/*AfxGet*/MainWnd()->SendMessage(WMU_COM_CMD, ComCmd_DocCmd, (long)&DCI)!=0) { return Scd.ReturnH(E_FAIL); } //CComPtr<IScdGraphic> pGrf; //SCD_ROF(pGrf.CoCreateInstance(CLSID_ScdGraphic)); //SCD_ROF(pGrf->put_Name(_bstr_t(DCI.m_sTitle))); //pVar[i].vt = VT_DISPATCH; //pVar[i].pdispVal = pGrf; //pVar[i].pdispVal->AddRef(); IScdGraphic * p; SCD_ROF(::CoCreateInstance(CLSID_ScdGraphic, NULL, CLSCTX_ALL, IID_IScdGraphic, (void**)&p)); SCD_ROF(p->put_Name(_bstr_t(DCI.m_sTitle))); LPDISPATCH pDisp; SCD_TOF(p->QueryInterface(IID_IDispatch, (void**)&pDisp), "IDispatch on ScdGraphic") pVar[i].vt = VT_DISPATCH; pVar[i].pdispVal = pDisp; p->Release(); } // Now make the enum. typedef CComObject< CComEnum< IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _Copy< VARIANT > > > enumVar; enumVar* pEnumVar = new enumVar; pEnumVar->Init(&pVar[0], &pVar[N], NULL, AtlFlagCopy); delete[] pVar; // return the enum. return pEnumVar->QueryInterface(IID_IUnknown, (void**)pVal); }
appSCD_COMENTRYGET(eScdGraphicsCodes, pVal) { CDocComInfo DCI; DCI.m_DoWhat=CDocComInfo::DCI_GetCount; if (/*AfxGet*/MainWnd()->SendMessage(WMU_COM_CMD, ComCmd_DocCmd, (long)&DCI)!=0) { return Scd.ReturnH(E_FAIL); } *pVal=DCI.m_lCount; }
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { CoInitialize(NULL); _Module.Init(NULL, hInstance); if(IsAppAlreadyRunning()) { dprintf("App is running already, exiting...\n"); return -1; } // Create our app window CFCWindow MainWnd(hInstance); RECT rcPos = { 0, 0, 200, 200 }; MainWnd.Create(NULL, rcPos, _T("FormSnoop Application Window")); MainWnd.SetAppHotKeys(g_uHotKeyRead, g_uHotKeyWrite); MainWnd.ShowWindow(SW_HIDE); // Win32 message loop MSG msg; while(GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } // Cleanup code MainWnd.RemoveHotKeys(g_uHotKeyRead, g_uHotKeyWrite); CleanUp(); CoUninitialize(); return 0; }
/** * マクロから呼び出されるエントリポイント。 * @param [in] text 検索文字列 * @return 戻り値に意味はない */ EXPORT int search(const char *text) { if (!IsHidemaruMail()) { #ifndef _DEBUG MessageBox(NULL, "このマクロは秀丸からは起動できません。", NULL, MB_OK); return 0; #endif } HWND hwnd = reinterpret_cast<HWND>(MainWnd()); if (hwnd == NULL) { MessageBox(NULL, "秀丸メール本体が起動してなければなりません。", NULL, MB_OK); return 0; } if (strlen(text) != 0) { std::string oneLine = text; size_t pos; if ((pos = oneLine.find("\r\n")) != std::string.npos) { oneLine[pos] = '\0'; } if (oneLine.find(' ') != std::string.npos) { selectedText = "\""; selectedText += YenEncode(oneLine.c_str()); selectedText += "\""; } else { selectedText = YenEncode(oneLine.c_str()); } } // SetQuietMode を使用すると、検索結果ウィンドウが手前に来ない // SetQuietMode(1); int rc = (int)DialogBox(hInst, (LPCTSTR)IDD_HIDEMARUMAILSEARCH_DIALOG, hwnd, (DLGPROC)DialogProc); // SetQuietMode(0); if (rc == IDOK) { const char *account = NULL; const char *folder = NULL; switch (selectedRadioButton) { case IDC_RADIO1: case IDC_RADIO2: account = (const char *)ExecAtMain("CurrentAccount"); if (IsHidemaruMailMain() || IsHidemaruMailGrep()) { folder = CurrentFolder(); } else { folder = (const char *)ExecAtMain("CurrentFolder"); } break; case IDC_RADIO3: account = (const char *)ExecAtMain("CurrentAccount"); if (selectedCheckBox) { folder = ""; } else { folder = "受信+送信済み+ユーザー"; } break; case IDC_RADIO4: account = ""; if (selectedCheckBox) { folder = ""; } else { folder = "受信+送信済み+ユーザー"; } break; } #ifdef _DEBUG switch (selectedRadioButton) { case IDC_RADIO1: case IDC_RADIO2: case IDC_RADIO3: if (account == NULL || strlen(account) == 0) { MessageBox(NULL, "秀丸メールにアカウントが見つかりませんでした。\nこのエラーが頻発するようなら作者に連絡してください。", "HidemaruMailSearch", MB_OK); } break; } #endif std::string inputText = history[0].c_str(); std::string query; trim(inputText); // お気に入りの保存と読み込み if (inputText.find("fav:") == 0) { size_t pos = inputText.find(' '); if (pos != std::string::npos) { size_t len = strlen("fav:"); if (pos != len) { std::string favname = inputText.substr(len, pos - len); std::string favval = inputText.substr(pos + 1); if (favval == "\"\"") { iniFile->write("Favorite", favname.c_str(), NULL); return 0; } else { iniFile->write("Favorite", favname.c_str(), favval.c_str()); return 0; } } } else { char *favval = iniFile->read("Favorite", inputText.substr(strlen("fav:")).c_str()); if (favval != NULL) { inputText = favval; free(favval); } } } if (inputText.compare("help:") == 0) { if (helpCmd == "") { char *temp; char *work = NULL; DWORD type; if ((temp = (char *)get_reg_value(hideinstloc, &type)) == NULL) { // 秀丸がインストールされていないなら、メモ帳 helpCmd = "notepad.exe "; work = (char *)get_reg_value(turukamedir, &type); helpCmd += "\""; helpCmd += work; helpCmd += "\\HidemaruMailSearch.txt\""; } else { helpCmd = "\""; helpCmd += temp; helpCmd += "\\Hidemaru.exe\" \""; helpCmd += "/j"; helpCmd += HELPFILE_LINE; helpCmd += " "; if ((work = (char *)get_reg_value(macropath, &type)) == NULL) { // マクロパスが存在しなければ秀丸の InstallLocation がホーム helpCmd += temp; } else { helpCmd += work; } helpCmd += "\\HidemaruMailSearch.txt\""; } if (temp != NULL) { free(temp); } if (work != NULL) { free(work); } } PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si, 0, sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); CreateProcess(NULL, (LPSTR)helpCmd.c_str(), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); return 0; } else if (inputText.find("debug:") == 0) { query = inputText.substr(strlen("debug:")); } else { std::string flag; trim(inputText); while (inputText.size() != 0) { int tagKind = findTag(inputText); if (tagKind == TARGET_SMALLHEADERBODY && inputText.find(colon_targets[TARGET_SMALLHEADERBODY]) != 0) { inputText = colon_targets[TARGET_SMALLHEADERBODY] + inputText; } rc = makeQuery(tagKind, inputText, query, flag); trim(inputText); } if (flag.size() != 0) { if (query.size() != 0) { query += ","; } query += flag; } // サブフォルダを検索対称にするかどうか if (selectedRadioButton == IDC_RADIO2) { query += ",subfolder=1"; } else { query += ",subfolder=0"; } // 常にハイライト query += ",hilight=1"; } #ifdef _DEBUG println("■アカウント"); println(account); println("■フォルダ"); println(folder); println("■検索式"); println(query); println("■入力"); println(history[0]); #endif if (IsHidemaruMailMain() || IsHidemaruMailGrep()) { SetFindPack(query.c_str()); StartDoGrep(account, folder); PushFindPack(); } else { ExecAtMain("SetFindPack", query.c_str()); ExecAtMain("StartDoGrep", account, folder); ExecAtMain("PushFindPack"); } } return 0; }