コード例 #1
0
ファイル: langpack.cpp プロジェクト: Seldom/miranda-ng
MIR_CORE_DLL(void) ReloadLangpack(TCHAR *pszStr)
{
	if (pszStr == NULL)
		pszStr = NEWTSTR_ALLOCA(langPack.tszFileName);

	UnloadLangPackModule();
	LoadLangPack(pszStr);
	Langpack_SortDuplicates();

	NotifyEventHooks(hevChanged, 0, 0);
}
コード例 #2
0
ファイル: miranda.cpp プロジェクト: Ganster41/miranda-ng
MIR_CORE_DLL(void) UnloadCoreModule(void)
{
	DestroyWindow(hAPCWindow);
	CloseHandle(hStackMutex);
	CloseHandle(hThreadQueueEmpty);
	TlsFree(mir_tls);

	UninitProtocols();
	DestroyModularEngine();
	UninitLogs();
	UnloadLangPackModule();
}
コード例 #3
0
ファイル: langpack.cpp プロジェクト: Seldom/miranda-ng
MIR_CORE_DLL(int) LoadLangPack(const TCHAR *ptszLangPack)
{
	if (ptszLangPack == NULL || !mir_tstrcmpi(ptszLangPack, _T("")))
		return 1;

	// ensure that a lang's name is a full file name
	TCHAR tszFullPath[MAX_PATH];
	if (!PathIsAbsoluteT(ptszLangPack))
		mir_sntprintf(tszFullPath, _T("%s\\%s"), g_tszRoot, ptszLangPack);
	else
		_tcsncpy_s(tszFullPath, ptszLangPack, _TRUNCATE);

	// this lang is already loaded? nothing to do then
	if (!mir_tstrcmp(tszFullPath, langPack.tszFullPath))
		return 0;

	// ok... loading a new langpack. remove the old one if needed
	if (g_entryCount)
		UnloadLangPackModule();

	// exists & not a directory?
	DWORD dwAttrib = GetFileAttributes(tszFullPath);
	if (dwAttrib == INVALID_FILE_ATTRIBUTES || (dwAttrib & FILE_ATTRIBUTE_DIRECTORY))
		return 3;

	// copy the full file name and extract a file name from it
	_tcsncpy_s(langPack.tszFullPath, tszFullPath, _TRUNCATE);
	TCHAR *p = _tcsrchr(langPack.tszFullPath, '\\');
	_tcsncpy_s(langPack.tszFileName, (p == NULL) ? tszFullPath : p + 1, _TRUNCATE);
	CharLower(langPack.tszFileName);

	FILE *fp = _tfopen(tszFullPath, _T("rt"));
	if (fp == NULL)
		return 1;

	char line[LANGPACK_BUF_SIZE] = "";
	int startOfLine = 0;
	if (LoadLangDescr(langPack, fp, line, startOfLine)) {
		fclose(fp);
		return 1;
	}

	// body
	fseek(fp, startOfLine, SEEK_SET);

	LoadLangPackFile(fp, line);
	fclose(fp);
	pCurrentMuuid = NULL;

	qsort(g_pEntries, g_entryCount, sizeof(LangPackEntry), (int(*)(const void*, const void*))SortLangPackHashesProc);
	return 0;
}
コード例 #4
0
INT_PTR CALLBACK WizardDlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)
{
	static HWND hdlgPage;

	switch(message) {
		case WM_INITDIALOG:
			SendMessage(hdlg,WM_SETICON,ICON_SMALL,(LPARAM)LoadIcon(hInst,MAKEINTRESOURCE(IDI_DBTOOL)));
			hdlgPage=NULL;
			SendMessage(hdlg,WZM_GOTOPAGE,IDD_WELCOME,(LPARAM)WelcomeDlgProc);
			TranslateDialog(hdlg);
			return TRUE;
		case WZM_GOTOPAGE:
			if(hdlgPage!=NULL) DestroyWindow(hdlgPage);
			EnableWindow(GetDlgItem(hdlg,IDC_BACK),TRUE);
			EnableWindow(GetDlgItem(hdlg,IDOK),TRUE);
			EnableWindow(GetDlgItem(hdlg,IDCANCEL),TRUE);
			SetDlgItemText(hdlg,IDCANCEL,TranslateT("Cancel"));
			hdlgPage=CreateDialog(hInst,MAKEINTRESOURCE(wParam),hdlg,(DLGPROC)lParam);
			TranslateDialog(hdlgPage);
			SetWindowPos(hdlgPage,0,0,0,0,0,SWP_NOZORDER|SWP_NOSIZE);
			ShowWindow(hdlgPage,SW_SHOW);
			break;
		case WM_COMMAND:
			switch(LOWORD(wParam)) {
				case IDC_BACK:
				case IDOK:
					SendMessage(hdlgPage,WZN_PAGECHANGING,wParam,0);
					SendMessage(hdlgPage,message,wParam,lParam);
					break;
				case IDCANCEL:
					if(SendMessage(hdlgPage,WZN_CANCELCLICKED,0,0)) break;
					EndDialog(hdlg,0);
					break;
			}
			break;
		case WM_DESTROY:
			if (opts.hFile)
				CloseHandle(opts.hFile);
			if (opts.hOutFile)
				CloseHandle(opts.hOutFile);
			DestroyWindow(hdlgPage);
			UnloadLangPackModule();
			if(hBoldFont!=NULL) DeleteObject(hBoldFont);
			if(hEmfHeaderLogo!=NULL) DeleteEnhMetaFile(hEmfHeaderLogo);
			break;
	}
	return FALSE;
}