Q: How to disbale a dialog from being moved?

A: There are two possibilites when moving a dialog, by click and drag the caption area of the dialog or by using the system menu "move" item and then move the dialog. I will describe how to disable both.

To disable the user from click and drag on the caption of the dialog, you have to handle the WM_NCHITTEST message. You call the base class and check the return value of the CDialog::OnNcHitTest(point) function:
Code:
LRESULT CYourDlg::OnNcHitTest(CPoint point)
{
	LRESULT res = CDialog::OnNcHitTest(point);
	if( res == HTCAPTION)
		res = HTNOWHERE;
	return res;
}
Regarding the system menu, you can either disble the "Move" item or completely remove it.

To disable it, handle the WM_INITMENUPOPUP message in your dialog:
Code:
void CYourDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
	CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);

	if ( bSysMenu ) 
	{ 
		pPopupMenu->EnableMenuItem( SC_MOVE, 
			MF_BYCOMMAND | MF_DISABLED | MF_GRAYED ); 
	}
}
To remove the "Move" item from the system menu, add the following at the end of your OnInitDialog function:

Code:
CMenu *pMenu = GetSystemMenu(FALSE); 
pMenu->DeleteMenu(SC_MOVE,MF_BYCOMMAND);