Ejemplo n.º 1
0
void showUserMenu(HWND hwnd, HWND hwndClicked, int xPos, int yPos, int btn, int clk)
{
	LPMALLOC pMalloc;

	UNREFERENCED_PARAMETER(hwndClicked);
	if(SHGetMalloc(&pMalloc) == NOERROR)
	{
		HMENU hMenu;
		UINT uID;
		PLISTIDL pScan;
		char fname[1024];
		char entry[20];

		wsprintf(entry, "%d%dFile", btn, clk);
		GetMyRegStr("Mouse", entry, fname, 1024, "");
		del_title(fname);

		hMenu = CreatePopupMenu();
		if(hMenu == NULL)
		{
			return;
		}

		uItemID = 100;
		if ( AddUserMenu(hMenu, pMalloc, fname))
		{
			if(hMenu != NULL)
			{
				if(!getODFlg++)
					GetODMenuState();
				SetForegroundWindow98(hwnd);

				uID = (UINT)TrackPopupMenu(
							hMenu,
							TPM_RIGHTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD,
							xPos, yPos, 0, hwnd, NULL);
				if(uID != 0)
				{
					pScan = g_ptListIDL;
					while(pScan != NULL)
					{
						if(pScan->uMenuID == uID)
						{
							ExecFile(hwnd, pScan->path);
							break;
						}
						pScan = pScan->next;
					}
				}
			}
		}
		DestroyUserMenu();
		DestroyMenu(hMenu);
	}
	pMalloc->lpVtbl->Release(pMalloc);
}
Ejemplo n.º 2
0
/*------------------------------------------------------------------
---------------------------------- open dialog to browse sound files
------------------------------------------------------------------*/
BOOL BrowseSoundFile(HWND hDlg, const char* deffile, char* fname)
{
	char filter[1024], mmfileexts[1024];
	char ftitle[MAX_PATH], initdir[MAX_PATH];
	
	OPENFILENAME ofn;
	ZeroMemory(&ofn, sizeof(ofn)); // Initialize OPENFILENAME
	ofn.lStructSize = sizeof(ofn);
	
	filter[0]=filter[1]='\0';
	str0cat(filter, MyString(IDS_MMFILE));
	GetMMFileExts(mmfileexts);
	str0cat(filter, mmfileexts);
	str0cat(filter, MyString(IDS_ALLFILE));
	str0cat(filter, "*.*");
	
	if(!deffile[0] || IsMMFile(deffile)) ofn.nFilterIndex = 1;
	else ofn.nFilterIndex = 2;
	
	memcpy(initdir, api.root, api.root_len+1);
	if(deffile[0]) {
		WIN32_FIND_DATA fd;
		HANDLE hfind;
		hfind = FindFirstFile(deffile, &fd);
		if(hfind != INVALID_HANDLE_VALUE) {
			FindClose(hfind);
			strncpy_s(initdir,sizeof(initdir),deffile,_TRUNCATE);
			del_title(initdir);
		}
	}
	
	*fname = '\0';
	
	ofn.hwndOwner = hDlg;
	ofn.hInstance = NULL;
	ofn.lpstrFilter = filter;
	ofn.lpstrFile = fname;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrFileTitle = ftitle;
	ofn.nMaxFileTitle = MAX_PATH;
	ofn.lpstrInitialDir = initdir;
	ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_FILEMUSTEXIST;
	
	if(GetOpenFileName(&ofn)) {
		size_t tlen=api.root_len;
		if(!strncmp(fname,api.root,tlen)) { // make relative to waves/ if possible
			if(!strncmp(fname+tlen,"\\waves\\",7)) {
				memmove(fname,fname+tlen+7,strlen(fname)-tlen-6);
			}
		}
		return 1;
	}
	return 0;
}
Ejemplo n.º 3
0
/*------------------------------------------------
   select file
--------------------------------------------------*/
BOOL SelectMyFile(HINSTANCE hInst, HWND hDlg,
	const char *filter, DWORD nFilterIndex,
	const char *deffile, char *retfile)
{
	OPENFILENAME ofn;
	char fname[MAX_PATH], ftitle[MAX_PATH], initdir[MAX_PATH];
	BOOL r;
	
	memset(&ofn, '\0', sizeof(OPENFILENAME));
	
	GetModuleFileName(hInst, initdir, MAX_PATH);
	del_title(initdir);
	if(deffile[0] && IsFile(deffile))
	{
		strcpy(initdir, deffile);
		del_title(initdir);
	}
	
	fname[0] = 0;
	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hDlg;
	ofn.hInstance = hInst;
	ofn.lpstrFilter = filter;
	ofn.nFilterIndex = nFilterIndex;
	ofn.lpstrFile= fname;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrFileTitle = ftitle;
	ofn.nMaxFileTitle = MAX_PATH;
	ofn.lpstrInitialDir = initdir;
	ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_FILEMUSTEXIST;
	// ofn.FlagsEx = 0;
	
	r = GetOpenFileName(&ofn);
	if(!r) return r;
	
	strcpy(retfile, ofn.lpstrFile);
	
	return r;
}
Ejemplo n.º 4
0
/*-------------------------------------------
  initialize
---------------------------------------------*/
void InitTCPlayer(void)
{
	GetModuleFileName(g_hInst, g_mydir, MAX_PATH);
	del_title(g_mydir);
	strcpy(g_inifile, g_mydir);
	add_title(g_inifile, "tclock.ini");
	g_bIniSetting = TRUE;
	
	// common/langcode.c
	FindFileWithLangCode(g_langfile, GetUserDefaultLangID(), TCLANGTXT);
	g_hfontDialog = CreateDialogFont();
	
	g_hwndClock = GetClockWindow();
	
	SetOnContextMenu();
}
Ejemplo n.º 5
0
/*------------------------------------------------
 ショートカットの作成
--------------------------------------------------*/
BOOL CreateLink(LPCSTR fname, LPCSTR dstpath, LPCSTR name)
{
	HRESULT hres;
	IShellLink* psl;

	CoInitialize(NULL);

	hres = CoCreateInstance(&CLSID_ShellLink, NULL,
		CLSCTX_INPROC_SERVER, &IID_IShellLink, &psl);
	if(SUCCEEDED(hres))
	{
		IPersistFile* ppf;
		char path[MAX_PATH];

/*		path[0] = '\"';
		strcpy(path+1, fname);
		strcat(path, "\"");*/
		psl->lpVtbl->SetPath(psl, fname);
		psl->lpVtbl->SetDescription(psl, name);
		strcpy(path, fname);
		del_title(path);
		psl->lpVtbl->SetWorkingDirectory(psl, path);

		hres = psl->lpVtbl->QueryInterface(psl, &IID_IPersistFile,
			&ppf);

		if(SUCCEEDED(hres))
		{
			WORD wsz[MAX_PATH];
			char lnkfile[MAX_PATH];
			strcpy(lnkfile, dstpath);
			add_title(lnkfile, (char*)name);
			strcat(lnkfile, ".lnk");

			MultiByteToWideChar(CP_ACP, 0, lnkfile, -1,
				wsz, MAX_PATH);

			hres = ppf->lpVtbl->Save(ppf, wsz, TRUE);
			ppf->lpVtbl->Release(ppf);
		}
		psl->lpVtbl->Release(psl);
	}
	CoUninitialize();

	if(SUCCEEDED(hres)) return TRUE;
	else return FALSE;
}
Ejemplo n.º 6
0
/*-------------------------------------------
  initialize
---------------------------------------------*/
void InitTCProp(void)
{
	GetModuleFileName(g_hInst, g_mydir, MAX_PATH);
	del_title(g_mydir);
	strcpy(g_inifile, g_mydir);
	add_title(g_inifile, "tclock.ini");
	g_bIniSetting = TRUE;
	
	// common/langcode.c
	FindFileWithLangCode(g_langfile, GetUserDefaultLangID(), TCLANGTXT);
	g_hfontDialog = CreateDialogFont();
	
	g_winver = CheckWinVersion();
	
	g_hIconPlay = LoadImage(g_hInst, MAKEINTRESOURCE(IDI_PLAY), IMAGE_ICON,
		16, 16, LR_DEFAULTCOLOR|LR_SHARED);
	g_hIconStop = LoadImage(g_hInst, MAKEINTRESOURCE(IDI_STOP), IMAGE_ICON,
		16, 16, LR_DEFAULTCOLOR|LR_SHARED);
}
Ejemplo n.º 7
0
/*------------------------------------------------
   select file
--------------------------------------------------*/
BOOL SelectMyFile(HWND hDlg, const char *filter, DWORD nFilterIndex, const char *deffile, char *retfile) {
	char fname[MAX_PATH], ftitle[MAX_PATH], initdir[MAX_PATH];
	OPENFILENAME ofn;
	BOOL r;
	
	memset(&ofn, '\0', sizeof(OPENFILENAME));
	
	strcpy(initdir, g_mydir);
	if(deffile[0])
	{
		WIN32_FIND_DATA fd;
		HANDLE hfind;
		hfind = FindFirstFile(deffile, &fd);
		if(hfind != INVALID_HANDLE_VALUE)
		{
			FindClose(hfind);
			strcpy(initdir, deffile);
			del_title(initdir);
		}
	}
	
	fname[0] = 0;
	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hDlg;
	ofn.hInstance = GetModuleHandle(NULL);
	ofn.lpstrFilter = filter;
	ofn.nFilterIndex = nFilterIndex;
	ofn.lpstrFile= fname;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrFileTitle = ftitle;
	ofn.nMaxFileTitle = MAX_PATH;
	ofn.lpstrInitialDir = initdir;
	ofn.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_FILEMUSTEXIST;
	
	r = GetOpenFileName(&ofn);
	if(!r) return r;
	
	strcpy(retfile, ofn.lpstrFile);
	
 return r;
}
Ejemplo n.º 8
0
//==========================
//--+++--> Create Launch T-Clock on Windows Startup ShortCut:
int CreateLink(LPCSTR fname, LPCSTR dstpath, LPCSTR name)
{
	HRESULT hres;
	IShellLink* psl;
	
	CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
	
	hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLink, (void**)&psl);
	if(SUCCEEDED(hres)) {
		IPersistFile* ppf;
		char path[MAX_PATH];
		
		psl->lpVtbl->SetPath(psl, fname);
		psl->lpVtbl->SetDescription(psl, name);
		strncpy_s(path,MAX_PATH,fname,_TRUNCATE);
		del_title(path);
		psl->lpVtbl->SetWorkingDirectory(psl, path);
		
		hres = psl->lpVtbl->QueryInterface(psl, &IID_IPersistFile, (void**)&ppf);
		if(SUCCEEDED(hres)) {
			WORD wsz[MAX_PATH];
			char lnkfile[MAX_PATH];
			strncpy_s(lnkfile, MAX_PATH, dstpath, _TRUNCATE);
			add_title(lnkfile, (char*)name);
			strcat(lnkfile, ".lnk");
			
			MultiByteToWideChar(CP_ACP, 0, lnkfile, -1, wsz, MAX_PATH);
			
			hres = ppf->lpVtbl->Save(ppf, wsz, TRUE);
			ppf->lpVtbl->Release(ppf);
		}
		psl->lpVtbl->Release(psl);
	}
	CoUninitialize();
	
	if(SUCCEEDED(hres))
		return 1;
	return 0;
}
Ejemplo n.º 9
0
/*-------------------------------------------
  Show "TClock Help"
---------------------------------------------*/
void MyHelp(HWND hwnd, const char *section)
{
	char helpurl[MAX_PATH], title[MAX_PATH];
	
	if(!g_langfile[0]) return;
	
	GetMyRegStr(NULL, "HelpURL", helpurl, MAX_PATH, "");
	if(helpurl[0] == 0)
	{
		if(GetPrivateProfileString("Main", "HelpURL", "", helpurl,
			MAX_PATH, g_langfile) == 0) return;
	}
	
	if(GetPrivateProfileString(section, "HelpURL", "", title,
			MAX_PATH, g_langfile) == 0) return;
	
	if(strlen(helpurl) > 0 && helpurl[ strlen(helpurl) - 1 ] != '/')
		del_title(helpurl);
	add_title(helpurl, title);
	
	ShellExecute(hwnd, NULL, helpurl, NULL, "", SW_SHOW);
}
Ejemplo n.º 10
0
//	2002/11/26 - H.N. Neri-uma added.
//	2002/11/27 - 635 modified.
//-------------------------------------------------
//	GetTooltipText
//		Tooltipのテキストを、レジストリからではなく、テキストファイルから読み込みます。
//	引数:	[char * pszText]	読み込んだ文字列を格納する変数へのポインタ
//	戻り値:0		エラー。テキストファイルが存在しなかった。ファイルは存在したが、空だった。など
//			0以外	成功
//-------------------------------------------------
static BOOL GetTooltipText(PSTR pszText)
{
	HANDLE	hFile;
	char	szFilePath[MAX_PATH];	//	テキストファイルのパス
	DWORD	dwReadSize;
	DWORD	dwFileSize;
	size_t	len;
	BOOL	bAbsPath;

//	{
//		GetCurrentDirectory(MAX_PATH, pszText);
//		return TRUE;
//	}

	if(!pszText)
	{
		//	値を格納するアドレスが存在しないので、FALSEを返して終了
		return FALSE;
	}

	//	テキストファイルのパス作成
	//GetModuleFileName(hmod, szFilePath, sizeof(szFilePath));
	//del_title(szFilePath);
	//add_title(szFilePath, TIPTEXTFILENAME);

	// \\NAME\C\path\path\filename.txt
	// C:\path\path\filename.txt
	// 以上の絶対パス以外を相対パスと判断して
	// その前にTClockのパスを基準ディレクトリとして付加
	bAbsPath = FALSE;
	len = strlen(pszText);
	if (len >= 2) {
		if ((*pszText == '\\') && (*(pszText + 1) == '\\')) {
			//UNC name
			bAbsPath = TRUE;
		} else if (*(pszText + 1) == ':') {
			bAbsPath = TRUE;
		}
	}
	if (bAbsPath == FALSE) {
		// TClockの位置を基準パスとして指定文字列を相対パスとして追加
		GetModuleFileName(hmod, szFilePath, sizeof(szFilePath));
		del_title(szFilePath);
		if (len + strlen(szFilePath) >= MAX_PATH) {
			return FALSE;
		}
		add_title(szFilePath, pszText);
		*pszText = '\0';
	} else {
		//635@p5 ファイル名を取得してツールチップをクリア。
		strcpy(szFilePath, pszText);
		*pszText = '\0';
	}

	//	ファイルを読み込む
	hFile = CreateFile(szFilePath,
					   GENERIC_READ,
					   FILE_SHARE_READ,
					   NULL,
					   OPEN_EXISTING,
					   FILE_ATTRIBUTE_NORMAL,
					   NULL);
	if(hFile == INVALID_HANDLE_VALUE)
	{
		//	ファイルが存在しないので、FALSEを返して終了
		return FALSE;
	}

	dwFileSize = GetFileSize(hFile, NULL);

	if ( dwFileSize > (DWORD)LEN_TOOLTIP)
		dwFileSize = (DWORD)(LEN_TOOLTIP-1);

	//	ファイル読み込み
	ReadFile(hFile, pszText, dwFileSize, &dwReadSize, NULL);
	//	ファイルをクローズ
	CloseHandle(hFile);

	if(strcmp(pszText, "") == 0)
	{
		//	文字列取得に失敗。レジストリ取得へ走らせるためにFALSEを返して終了
		return FALSE;
	}

	//	文字列の末尾に、強制的にNULL Stringを付加(^^;
	pszText[dwFileSize] = '\0';

	//	成功したのでTRUEを返す
	return TRUE;
}
Ejemplo n.º 11
0
/*------------------------------------------------
  initialize the clock
--------------------------------------------------*/
void InitClock(HWND hwnd)
{
	RECT rc;
	
	if(g_bInitClock) return;
	g_bInitClock = TRUE;
	
	g_hInst = GetModuleHandle(DLLFILENAME);
	
	g_winver = CheckWinVersion();       // common/utl.c
	g_bVisualStyle = IsXPVisualStyle(); // common/utl.c
	
#if 0
	if(!(g_winver&WIN10RS1))
	{
		// check subclassification
		if(IsSubclassed(hwnd))
		{
			SendMessage(g_hwndTClockMain, TCM_CLOCKERROR, 0, 6);
			return;
		}
	}
#endif
	
	GetModuleFileName(g_hInst, g_mydir, MAX_PATH);
	del_title(g_mydir);
	
	strcpy(g_inifile, g_mydir);
	add_title(g_inifile, "tclock.ini");
	g_bIniSetting = TRUE;
/*  g_bIniSetting = FALSE;
	if(IsFile(g_inifile)) g_bIniSetting = TRUE; */
	
	// Save the original window size
	GetWindowRect(hwnd, &rc);
	g_OrigClockWidth = rc.right - rc.left;
	g_OrigClockHeight = rc.bottom - rc.top;
	// Save taskbar direction
	g_bVertTaskbar = IsVertTaskbar(GetParent(GetParent(hwnd)));
	g_bTaskbarPosChanging = FALSE;
	
	// tell tclock.exe clock's HWND
	PostMessage(g_hwndTClockMain, TCM_HWNDCLOCK, 0, (LPARAM)hwnd);
	
	// read settings
	LoadSetting(hwnd);
	
	InitTooltip(hwnd); // tooltip.c
	InitUserStr();     // userstr.c
	
	// subclassfy the clock window !!
	if(g_winver&WIN10RS1)
	{
		SetWindowSubclass(GetParent(hwnd), SubclassTrayProc,
				SUBCLASSTRAY_ID, (DWORD_PTR)hwnd);
	}
	SetWindowSubclass(hwnd, SubclassProc, SUBCLASS_ID, 0);
	
	// don't accept double clicks
	SetClassLong(hwnd, GCL_STYLE,
		GetClassLong(hwnd, GCL_STYLE) & ~CS_DBLCLKS);
	
#if TC_ENABLE_STARTBUTTON
	InitStartButton(hwnd); // startbtn.c
#endif
#if TC_ENABLE_STARTMENU
	InitStartMenu(hwnd);   // startmenu.c
#endif
#if TC_ENABLE_TASKBAR
	InitTaskbar(hwnd);     // taskbar.c
#endif
#if TC_ENABLE_TASKSWITCH
	InitTaskSwitch(hwnd);  // taskswitch.c
#endif
#if TC_ENABLE_TRAYNOTIFY
	InitTrayNotify(hwnd);  // traynotify.c
#endif
#if TC_ENABLE_VOLUME
	InitMixer();           // mixer.c
#endif
#if TC_ENABLE_SYSINFO
	InitSysInfo(hwnd);     // sysinfo.c
#endif
	
#if TC_ENABLE_TASKBAR
	RefreshTaskbar(hwnd);  // taskbar.c
#else
	PostMessage(GetParent(GetParent(hwnd)), WM_SIZE, SIZE_RESTORED, 0);
	InvalidateRect(GetParent(GetParent(hwnd)), NULL, TRUE);
#endif
	
	SetTimer(hwnd, IDTIMER_MAIN, 1000, NULL);
	
#if TC_ENABLE_DESKTOPICON
	SetDesktopIcons();     // desktop.c
#endif
}