ummm well are you redrawing the crosshair every frame? because with that command dbInk(dbRgb(255,0,0),0); you are not actually changing the crosshair colour, only the ink colour. This following code creates a black crosshair normally, that changes red when an object comes into veiw. i havnt tested it.
//set vars for center of screen
int w=dbScreenWidth()/2;
int h=dbScreenHeight()/2;
//draw black corsshair
dbInk(dbRGB(255,0,0));
dbLine(w, h-5, w, h+5);
dbLine(w-5, h, w+5, h);
//check if objects in crosshair
for(int total = 2; total < 60; total++)
{
if(dbObjectScreenX(total) < w+5 && dbObjectScreenX(total) > w-5 && dbObjectScreenY(total) > h-5 && dbObjectScreenY(total) < h+5)
{
//redraw crosshair as red
dbInk(dbRgb(255,0,0),0);
dbLine(w, h-5, w, h+5);
dbLine(w-5, h, w+5, h);
}
}