1)
Which of these two methods for drawing basic shapes(eg a rectangle for a sprite) is better:
a) Have a static vertex that stores all the basic infomation for triangles, rectangles, etc and use "D3dDevice->SetTransform(D3DTS_WORLD, &Matrix);" to draw these where I want eg:
//...vertex buffer populated with vertexes for a 200*200 sqaure around 0,0
//draw a rotated square in the centre of a 800*600 screen
D3DXMATRIX Rot, Trans;
D3DXMatrixTranslation(&Trans, 400,300,0);
D3DXMatrixRotationZ (&Rot , (float)DegToRad(45));
//rotate and THEN translate
D3dDevice->SetTransform(D3DTS_WORLD, &Rot*Trans);
D3dDevice->SetStreamSource(0, VextexBufferPrim, 0, sizeof(D3dVertex));
D3dDevice->SetFVF(D3dVertex::FVF);
D3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, RectOffset, 2);
b) Use a dynamic vertex buffer to "directly" draw the shapes
//draw a rotated rectangle in the centre of a 800*600 screen
D3dDevice->SetStreamSource(0, VextexBufferDynamic, 0, sizeof(D3dVertex));
D3dDevice->SetFVF(D3dVertex::FVF);
D3dVertex* vertices;
VextexBufferDynamic->Lock(0, 0, (void**)&vertices, D3DLOCK_DISCARD);
vertices[0] = D3dVertex(400,250, 2, cWhite, 0,0);
vertices[1] = D3dVertex(450,300, 2, cWhite, 1,0);
vertices[2] = D3dVertex(400,350, 2, cWhite, 1,1);
vertices[3] = D3dVertex(350,300, 2, cWhite, 0,1);
VextexBufferDynamic->Unlock();
D3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2);
2)Are buttons and stuff on in game menus generaly implemented with winAPI or by drawing the buttons with Direct3D and using custom code to check if the button has been cliked on etc?