I'd like to answer ur 2nd question...
1. you should set some variables
float g_fSpeed = 0.8f; // moving speed
float g_fOldCamAngleX = 0.0f; // to store original x angle
float g_fOldCamAngleY = 0.0f; // to store original y angle
float g_fCameraAngleX = 0.0f; // to sotre new x angle
float g_fCameraAngleY = 0.0f; // to store new y angle
and then make angle changes while moving ur mouse
//change the angle of camera by moving mouse
g_fCameraAngleY = dbWrapValue ( g_fCameraAngleY + dbMouseMoveX ( ) * 0.3f);
g_fCameraAngleX = dbWrapValue ( g_fCameraAngleX + dbMouseMoveY ( ) * 0.3f );
dbYRotateCamera ( 0, dbCurveAngle ( g_fCameraAngleY, g_fOldCamAngleY, 24 ) );
dbXRotateCamera ( 0, dbCurveAngle ( g_fCameraAngleX, g_fOldCamAngleX, 24 ) );
at last, you can click the mouse to control and move the camera...
if (dbMouseClick()) { dbMoveCamera (0, g_fSpeed); }
that's all... try it~