Example #1
0
int strcasencmp(LPCSTR s1,LPCSTR s2,DWORD n)
{
	if (int(n)<1)
		return 0;

	TCHAR *tmp1,*tmp2;	
	int ret;
	DWORD n1,n2;

	for (n1=0;n1<n && s1[n1]!='\0';n1++);
	for (n2=0;n2<n && s2[n2]!='\0';n2++);

	tmp1=new CHAR[n+1];
	if (tmp1==NULL)
		SetHFCError(HFC_CANNOTALLOC);
	tmp2=new CHAR[n+1];
	if (tmp2==NULL)
		SetHFCError(HFC_CANNOTALLOC);
	dMemCopy(tmp1,s1,n1);
	dMemCopy(tmp2,s2,n2);
    
	tmp1[n1]='\0';
	tmp2[n2]='\0';
	CharLower(tmp1);
	CharLower(tmp2);
	ret=strcmp(tmp1,tmp2);
	delete[] tmp1;
	delete[] tmp2;
	return ret;
}
Example #2
0
int CTargetWnd::GetText(CStringW& str) const
{
	if (IsUnicodeSystem())
	{
		int len=(int)::SendMessageW(m_hWnd,WM_GETTEXTLENGTH,0,0)+2;
		LPWSTR text=new WCHAR[len];
		if (text==NULL)
		{
			SetHFCError(HFC_CANNOTALLOC);
			return FALSE;
		}
		len=(int)::SendMessageW(m_hWnd,WM_GETTEXT,(WPARAM)len,(LPARAM)text);
		str.Copy(text,len);
		delete[] text;
		return len;
	}
	
	int len=(int)::SendMessage(m_hWnd,WM_GETTEXTLENGTH,0,0)+2;
	LPSTR text=new CHAR[len];
	if (text==NULL)
	{
		SetHFCError(HFC_CANNOTALLOC);
		return FALSE;
	}
	len=(int)::SendMessageA(m_hWnd,WM_GETTEXT,(WPARAM)len,(LPARAM)text); 
	str.Copy(text,len);
	delete[] text;
	return len;
}
Example #3
0
LPWSTR allocstringW(UINT nID,TypeOfResourceHandle bType)
{
	LPWSTR szBuffer;
	szBuffer=new WCHAR[STR_LOADSTRINGBUFLEN];
	if (szBuffer==NULL)
	{
		SetHFCError(HFC_CANNOTALLOCATE);
		return NULL;
	}
	UINT nDataLen=::LoadString(nID,szBuffer,STR_LOADSTRINGBUFLEN,bType);
	if (nDataLen>=STR_LOADSTRINGBUFLEN-2)
	{
		for (DWORD i=2;nDataLen>=i*STR_LOADSTRINGBUFLEN-2;i++)
		{
			delete[] szBuffer;
			szBuffer=new WCHAR[i*STR_LOADSTRINGBUFLEN];
			nDataLen=::LoadString(nID,szBuffer,i*STR_LOADSTRINGBUFLEN,bType);
		}
	}

	WCHAR* pText=new WCHAR[nDataLen+1];
	MemCopy(pText,szBuffer,(nDataLen+1)*2);
	delete[] szBuffer;
	return pText;
}
Example #4
0
LPSTR allocstring(UINT nID,TypeOfResourceHandle bType)
{
	LPSTR szBuffer;
	szBuffer=new CHAR[STR_LOADSTRINGBUFLEN];
	if (szBuffer==NULL)
	{
		SetHFCError(HFC_CANNOTALLOCATE);
		return FALSE;
	}
	UINT nDataLen=::LoadStringA(GetResourceHandle(bType),nID,szBuffer,STR_LOADSTRINGBUFLEN);
	if (nDataLen>=STR_LOADSTRINGBUFLEN-2)
	{
		for (DWORD i=2;nDataLen>=i*STR_LOADSTRINGBUFLEN-2;i++)
		{
			delete[] szBuffer;
			szBuffer=new CHAR[i*STR_LOADSTRINGBUFLEN];
			nDataLen=::LoadStringA(GetResourceHandle(bType),nID,szBuffer,i*STR_LOADSTRINGBUFLEN);
		}
	}

	char* pText=new char[nDataLen+1];
	MemCopy(pText,szBuffer,nDataLen+1);
	delete[] szBuffer;
	return pText;
}
Example #5
0
int strcasencmp(LPCWSTR s1,LPCWSTR s2,DWORD n)
{
	if (int(n)<1)
		return 0;

	WCHAR *tmp1,*tmp2;	
	int ret;
	DWORD n1,n2;

	for (n1=0;n1<n && s1[n1]!='\0';n1++);
	for (n2=0;n2<n && s2[n2]!='\0';n2++);

	tmp1=new WCHAR[n+1];
	if (tmp1==NULL)
		SetHFCError(HFC_CANNOTALLOC);
	tmp2=new WCHAR[n+1];
	if (tmp2==NULL)
		SetHFCError(HFC_CANNOTALLOC);
	dMemCopy(tmp1,s1,n1*2);
	dMemCopy(tmp2,s2,n2*2);
    
	tmp1[n1]='\0';
	tmp2[n2]='\0';
	if (IsUnicodeSystem())
	{
		CharLowerW(tmp1);
		CharLowerW(tmp2);
	}
	else
	{
		_wcslwr_s(tmp1,n+1);
		_wcslwr_s(tmp2,n+1);
	}
	ret=wcscmp(tmp1,tmp2);
	delete[] tmp1;
	delete[] tmp2;
	return ret;
}
Example #6
0
int strcasecmp(LPCWSTR s1,LPCWSTR s2)
{
	WCHAR *tmp1,*tmp2;	
	int ret;
	DWORD nLen1=(DWORD)istrlenw(s1);
	DWORD nLen2=(DWORD)istrlenw(s2);
	
	tmp1=new WCHAR[nLen1+2];
	if (tmp1==NULL)
		SetHFCError(HFC_CANNOTALLOC);
	CopyMemory(tmp1,s1,nLen1*2+2);
	
	tmp2=new WCHAR[nLen2+2];
	if (tmp2==NULL)
		SetHFCError(HFC_CANNOTALLOC);
	CopyMemory(tmp2,s2,nLen2*2+2);
	
	CharLowerBuffW(tmp1,nLen1);
	CharLowerBuffW(tmp2,nLen2);
	ret=wcscmp(tmp1,tmp2);
	delete[] tmp1;
	delete[] tmp2;
	return ret;
}
Example #7
0
POSITION CMDIChildWndList::AddWindow(CMDIChildWnd* pWnd)
{
	CNode* tmp=new CNode;
	if (tmp==NULL)
	{
		SetHFCError(HFC_CANNOTALLOC);
		return NULL;
	}
	tmp->pWnd=pWnd;
	tmp->pPrev=NULL;
	tmp->pNext=m_pNodeHead;
	if (m_pNodeHead!=NULL)
		m_pNodeHead->pPrev=tmp;
	else
		m_pNodeTail=tmp;
	m_pNodeHead=tmp;
	m_nCount++;
	return (POSITION) tmp;
}
Example #8
0
ID2W::ID2W(UINT nID,TypeOfResourceHandle bType)
{
	pWStr=new WCHAR[STR_LOADSTRINGBUFLEN];
	if (pWStr==NULL)
	{
		SetHFCError(HFC_CANNOTALLOCATE);
		return;
	}
	UINT nDataLen=::LoadString(nID,pWStr,STR_LOADSTRINGBUFLEN,bType);
	if (nDataLen>=STR_LOADSTRINGBUFLEN-2)
	{
		for (DWORD i=2;nDataLen>=i*STR_LOADSTRINGBUFLEN-2;i++)
		{
			delete[] pWStr;
			pWStr=new WCHAR[i*STR_LOADSTRINGBUFLEN];
			nDataLen=::LoadString(nID,pWStr,i*STR_LOADSTRINGBUFLEN,bType);
		}
	}
}
Example #9
0
ID2A::ID2A(UINT nID,TypeOfResourceHandle bType)
{
	pStr=new CHAR[STR_LOADSTRINGBUFLEN];
	if (pStr==NULL)
	{
		SetHFCError(HFC_CANNOTALLOCATE);
		return;
	}
	UINT nDataLen=::LoadStringA(GetResourceHandle(bType),nID,pStr,STR_LOADSTRINGBUFLEN);
	if (nDataLen>=STR_LOADSTRINGBUFLEN-2)
	{
		for (DWORD i=2;nDataLen>=i*STR_LOADSTRINGBUFLEN-2;i++)
		{
			delete[] pStr;
			pStr=new CHAR[i*STR_LOADSTRINGBUFLEN];
			nDataLen=::LoadStringA(GetResourceHandle(bType),nID,pStr,i*STR_LOADSTRINGBUFLEN);
		}
	}
}
Example #10
0
LRESULT CALLBACK CDateTimeCtrlEx::WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	CDateTimeCtrlEx* pData;
	if (msg==WM_CREATE)
	{
		CREATESTRUCT* pCreateStruct=(CREATESTRUCT*)lParam;
		if (pCreateStruct->lpCreateParams==NULL)
		{
			pData=new CDateTimeCtrlEx(hWnd);
			if (pData==NULL)
			{
				SetHFCError(HFC_CANNOTALLOC);
				return FALSE;
			}
		}
		else
		{
			pData=(CDateTimeCtrlEx*)pCreateStruct->lpCreateParams;
			pData->Attach(hWnd);
		}
		
		::SetWindowLongPtr(hWnd,GWLP_USERDATA,(LONG_PTR)pData);

		pData->CreateControls();		
		return FALSE;
	}

	pData=(CDateTimeCtrlEx*)::GetWindowLongPtr(hWnd,GWLP_USERDATA);	
	if (pData==NULL)
		return DefWindowProc(hWnd,msg,wParam,lParam);


	switch (msg)
	{
	case WM_DESTROY:
		delete pData;
		::SetWindowLongPtr(hWnd,GWLP_USERDATA,(LONG_PTR)NULL);
		return 0;
	case WM_ENABLE:
		::EnableWindow(pData->m_hTimePickerWnd,(BOOL)wParam);
		::EnableWindow(pData->m_hEditWnd,(BOOL)wParam);
		::EnableWindow(pData->m_hSpinWnd,(BOOL)wParam);
		pData->Invalidate();
		break;	
	case DTM_GETSYSTEMTIME:
		return pData->GetExplicitDate((LPSYSTEMTIME)lParam,(DWORD)wParam);
	case DTM_SETSYSTEMTIME:
		return pData->SetExplicitDate((LPSYSTEMTIME)lParam,(DWORD)wParam);
	case DTM_GETRANGE:
	case DTM_SETRANGE:
	case DTM_SETFORMATA:
	case DTM_SETFORMATW:
	case DTM_SETMCCOLOR:
	case DTM_GETMCCOLOR:
	case DTM_GETMONTHCAL:
	case DTM_SETMCFONT:
	case DTM_GETMCFONT:
		return ::SendMessage(pData->m_hTimePickerWnd,msg,wParam,lParam);
	case WM_PAINT:
		pData->OnPaint();
		break;
	case WM_MOUSEMOVE:
		if ((pData->m_dwFlags&ButtonStateMask)==Normal)
		{
			pData->m_dwFlags&=~ButtonStateMask;
			pData->m_dwFlags|=Hot;
			
			pData->Invalidate();
			pData->SetCapture();
		}
		else if ((pData->m_dwFlags&ButtonStateMask)==Hot)
		{
			CRect rcButtonArea;
			pData->GetClientRect(&rcButtonArea);
			if (pData->m_hTheme!=NULL && pData->m_pDrawThemeBackground!=NULL)
				rcButtonArea.left=rcButtonArea.right-BUTTON_WIDTHTHEME;
			else
				rcButtonArea.left=rcButtonArea.right-BUTTON_WIDTHORIG;


			if (!rcButtonArea.IsPtInRect(LOWORD(lParam),HIWORD(lParam)))
			{
				ReleaseCapture();
				pData->m_dwFlags&=~ButtonStateMask;
				pData->m_dwFlags|=Normal;
				pData->Invalidate();
			}
		}		
		return 0;
	case WM_LBUTTONDOWN:
		{
			if ((pData->m_dwFlags&ButtonStateMask)==Hot)
				ReleaseCapture();
			pData->m_dwFlags&=~ButtonStateMask;
			pData->m_dwFlags|=Pressed;
			pData->Invalidate();
	
			RECT rcWindowRect;
			::GetWindowRect(hWnd,&rcWindowRect);
			
			CMenu PopupMenus;
			PopupMenus.LoadMenu(IDR_POPUPMENU);
			
			if ((pData->m_dwFlags&ModeMask)==ModeExplicit)
				PopupMenus.CheckMenuItem(IDM_EXPLICITDATE,MF_CHECKED|MF_BYCOMMAND);
			else
				PopupMenus.CheckMenuItem(IDM_RELATIVEDATE,MF_CHECKED|MF_BYCOMMAND);


			int nCmd=TrackPopupMenu(PopupMenus.GetSubMenu(SUBMENU_DATETIMEPICKEXMENU),
				TPM_RIGHTALIGN|TPM_TOPALIGN|TPM_RIGHTBUTTON|TPM_NONOTIFY|TPM_RETURNCMD,
				rcWindowRect.right,rcWindowRect.bottom,0,hWnd,NULL);
			PopupMenus.DestroyMenu();

			switch (nCmd)
			{
			case IDM_EXPLICITDATE:
				pData->ChangeMode(FALSE);
				break;
			case IDM_RELATIVEDATE:
				pData->ChangeMode(TRUE);
				break;
			}	

			if (!(pData->m_dwFlags&DontSendNotifications))
				::PostMessage(::GetParent(hWnd),WM_COMMAND,MAKEWPARAM(::GetWindowLong(hWnd,GWL_ID),DTXN_MODECHANGED),(LPARAM)hWnd);

			pData->m_dwFlags&=~ButtonStateMask;
			pData->m_dwFlags|=Normal;
			pData->Invalidate();
			
			return 0;
		}
		
	case WM_LBUTTONUP:
		if ((pData->m_dwFlags&ButtonStateMask)==Pressed)
		{
			ReleaseCapture();
			pData->m_dwFlags&=~ButtonStateMask;
			pData->m_dwFlags|=Normal;
			pData->Invalidate();
		}
		return 0;
	case WM_SETFONT:
		if (pData!=NULL)
		{
			::SendMessage(pData->m_hTimePickerWnd,WM_SETFONT,wParam,lParam);
			::SendMessage(pData->m_hEditWnd,WM_SETFONT,wParam,lParam);
			::SendMessage(pData->m_hSpinWnd,WM_SETFONT,wParam,lParam);
		}
		break;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDC_RELATIVEDATE:
			switch (HIWORD(wParam))
			{
			case EN_KILLFOCUS:
				pData->SetRelativeDate((int)::SendMessage(pData->m_hSpinWnd,UDM_GETPOS32,0,0),
					DTXF_NOSPINCHANGE|DTXF_NOMODECHANGE);
				break;
			case EN_CHANGE:
				if (!(pData->m_dwFlags&SpinBoxIsUpdating))
				{
					int nVal=0;
					int nLen=(int)::SendMessage(pData->m_hEditWnd,WM_GETTEXTLENGTH,0,0);
						
					if (nLen>0)
					{
						if (IsUnicodeSystem())
						{
							WCHAR* pText=new WCHAR[nLen+1];
							::SendMessageW(pData->m_hEditWnd,WM_GETTEXT,nLen+1,(LPARAM)pText);
							nVal=GetValueFromText(pText);
							delete[] pText;
						}
						else
						{
							char* pText=new char[nLen+1];
							::SendMessage(pData->m_hEditWnd,WM_GETTEXT,nLen+1,(LPARAM)pText);
							nVal=GetValueFromText(A2W(pText));
							delete[] pText;
						}
						

					}
					::SendMessage(pData->m_hSpinWnd,UDM_SETPOS32,0,nVal);

					if (!(pData->m_dwFlags&DontSendNotifications))
						::SendMessage(::GetParent(hWnd),WM_COMMAND,MAKEWPARAM(::GetWindowLong(hWnd,GWL_ID),DTXN_CHANGE),(LPARAM)hWnd);
				}
				break;
			}
			break;
		}
		break;
	case WM_NOTIFY:
		if (((LPNMHDR)lParam)->idFrom==IDC_RELATIVEDATESPIN && 
			((LPNMHDR)lParam)->code==UDN_DELTAPOS)
		{
			LPNMUPDOWN pUD=(LPNMUPDOWN)lParam;
			int nNewPos=pUD->iPos+pUD->iDelta;
			
			if (nNewPos<0)
			{
				pUD->iDelta=-pUD->iPos;
				nNewPos=0;
			}

			pData->m_dwFlags|=SpinBoxIsUpdating;

			//::SendMessage(pData->m_hEditWnd,WM_SETTEXT,0,(LPARAM)szEmpty);
			pData->SetRelativeDate(nNewPos,DTXF_NOSPINCHANGE|DTXF_NOMODECHANGE);			

			
			pData->m_dwFlags&=~SpinBoxIsUpdating;

			if (!(pData->m_dwFlags&DontSendNotifications))
				::SendMessage(::GetParent(hWnd),WM_COMMAND,MAKEWPARAM(::GetWindowLong(hWnd,GWL_ID),DTXN_CHANGE),(LPARAM)hWnd);

		}
		else if (((LPNMHDR)lParam)->idFrom==IDC_EXPLICITIDATE && 
			((LPNMHDR)lParam)->code==DTN_DATETIMECHANGE)
		{
			if (!(pData->m_dwFlags&DontSendNotifications))
				::SendMessage(::GetParent(hWnd),WM_COMMAND,MAKEWPARAM(::GetWindowLong(hWnd,GWL_ID),DTXN_CHANGE),(LPARAM)hWnd);
		}
		break;
	case DTXM_SETRELDATE:
		// wParam is new pos, lparam contains flags (DTXF_*)
		pData->SetRelativeDate((int)wParam,(DWORD)lParam);
		break;
	case DTXM_GETRELDATE:
		return pData->GetRelativeDate();
	case DTXM_GETCLASS:
		return (LRESULT)pData;
	case DTXM_CHANGEMODE:
		pData->ChangeMode((BOOL)wParam);
		break;
	case DTXM_GETMODE:
		return pData->GetMode();
	case WM_SETFOCUS:
		if ((pData->m_dwFlags&ModeMask)==ModeExplicit)
			::SetFocus(pData->m_hTimePickerWnd);
		else
		{
			::SetFocus(pData->m_hEditWnd);
			::SendMessage(pData->m_hEditWnd,EM_SETSEL,0,-1);
		}

		return 0;
	}
	return DefWindowProc(hWnd,msg,wParam,lParam);
}