コード例 #1
0
ファイル: comdlg.cpp プロジェクト: Redi0/jucpp
	UINT_PTR FileDialog::OFNHookProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
	{
		if(_Handle==0) _Handle = ::GetParent(hDlg);
		if(uMsg==WM_NOTIFY)
		{
			LPOFNOTIFY pon = (LPOFNOTIFY)lParam;
			switch(pon->hdr.code)
			{
			case CDN_SELCHANGE:
				{
					/*if(OnSelChange.IsNull()) break;
					Memory<wchar_t> path(MAX_PATH),file(MAX_PATH);
					int n = (int)::SendMessage(_Handle,CDM_GETFILEPATH,(WPARAM)MAX_PATH,(LPARAM)path.Handle());
					这个消息返回的值包括目录和文件名,目录们没有引号,文件名用空格分隔并且用引号包围,目录和文件名之间没有空格,目录末尾包含反斜杠。
					但是引号有时没有,有时有,如果文件名包含空格,实际上无法正确获取文件名,所以此方法实际上不可用。
					if(n<0) path[0] = 0;
					n = (int)::SendMessage(_Handle,CDM_GETSPEC,(WPARAM)MAX_PATH,(LPARAM)file.Handle());
					这个消息返回文件名,规则同上。
					if(n<0) path[0] = 0;
					OnSelChange(path,file);*/
					break;
				}
			case CDN_FOLDERCHANGE:
				{
					if(!OnFolderChange.IsNull()){
						Memory<wchar_t> path;
						path.SetLength(MAX_PATH);
						int n = (int)::SendMessage(_Handle,CDM_GETFOLDERPATH,(WPARAM)MAX_PATH,(LPARAM)path.Handle());
						if(n<0){
							path[0] = 0;
						}
						OnFolderChange(path,this);
					}
					break;
				}
			case CDN_FILEOK://this message is ago okid message,if return TRUE then no okid message;
				if((!OnFileOk.IsNull())&&(OnFileOk(pon->lpOFN,this)))
				{
					SetWindowLong(_Handle,DWL_MSGRESULT,1L);
					return 1;
				}
				break;
			case CDN_TYPECHANGE:
				if(!OnTypeChange.IsNull()) OnTypeChange(pon->lpOFN->nFilterIndex,this);
				break;
			}
		}
		return 0;
	};
コード例 #2
0
BOOL CPreviewFileDialog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
	ASSERT(pResult != NULL);

	// allow message map to override

	OFNOTIFY* pNotify = (OFNOTIFY*)lParam;
	switch(pNotify->hdr.code)
	{
	case CDN_SELCHANGE:
		OnFileNameChange();
		return TRUE;
	case CDN_FOLDERCHANGE:
		OnFolderChange();
		return TRUE;
	case CDN_INITDONE:
		OnInitDone();
		return TRUE;
	}
	return CFileDialog::OnNotify(wParam, lParam, pResult);
}
コード例 #3
0
ファイル: dlgfile.cpp プロジェクト: rickerliang/OpenNT
BOOL CFileDialog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
	ASSERT(pResult != NULL);

	// allow message map to override
	if (CCommonDialog::OnNotify(wParam, lParam, pResult))
		return TRUE;

#ifndef _MAC
	OFNOTIFY* pNotify = (OFNOTIFY*)lParam;
	switch(pNotify->hdr.code)
	{
	case CDN_INITDONE:
		OnInitDone();
		return TRUE;
	case CDN_SELCHANGE:
		OnFileNameChange();
		return TRUE;
	case CDN_FOLDERCHANGE:
		OnFolderChange();
		return TRUE;
	case CDN_SHAREVIOLATION:
		*pResult = OnShareViolation(pNotify->pszFile);
		return TRUE;
	case CDN_HELP:
		if (!SendMessage(WM_COMMAND, ID_HELP))
			SendMessage(WM_COMMANDHELP, 0, 0);
		return TRUE;
	case CDN_FILEOK:
		*pResult = OnFileNameOK();
		return TRUE;
	case CDN_TYPECHANGE:
		OnTypeChange();
		return TRUE;
	}
#endif

	return FALSE;   // not handled
}