Opetten WinAPIa, ja tarvitsen hieman apua.
-----------------------------------------------
CreateWindowEx(NULL, "button", NULL, WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 10, 0, 472, 245, hwnd, (HMENU) 0, hInstance, NULL); // kehys
Kyseisellä koodin saan tehtyä laatikon Dialogiin.
Miten saan tehtyä suoran viivan?
-----------------------------------------------
CreateWindowEx(NULL, "button", NULL, WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 10, 0, 472, 245, hwnd, (HMENU) 0, hInstance, NULL); // kehys
Kyseisellä koodin saan tehtyä laatikon Dialogiin.
Miten saan tehtyä suoran viivan?
Vastaukset 4
Vanhimmat
kuten laatikko aseta leveydeksi 1 ?
tai vastaa WM_PAINT viestiin.
helpointa lienee käyttää jotain resurssi editoria ?
Sain toimimaan kyseisen ongelman.
Pystyykö resurssieditorilla jos tekee esim. dialogin, niin kopiomaan sen jotenkin tuonne WM_CREATE osioon?
Jotenkin niin, että saisin vaihdettua ikkunan sisältöä tarpeen mukaan. (Erikseen tietysti voi luoda Dialogin, mutta sille nyt ei ole tarvitta.)
Käsittelet WM_PAINT sanoman niinkun tuossa joku jo mainitsikin.
Siinä sinun pitää hankkia ensiksi piirtopinnan kahva BeginPaint -funktiolla.
Kun olet saanut piirtopinnan kahvan, valitset vaikka kynän piirtopinnalle. Tässä käytä SelectObject ja GetStockObject -funktioita.
GetClientRect funktiolla saat vaikkapa sen haluamasi kontrollin koordinaatit jonka päälle haluat niitä viivoja piirrellä.
MoveToEx ja LineTo funktioilla piirtelemään.
Muista lopettaa piirtäminen EndPaint funktiolla.
Katso msdn:stä noiden funktioiden kuvaukset. Löytyy varmaan tarkat esimerkitkin.
Kiitos vinkistä! Sain WM_PAINTin MoveTo&LineTo toimimaan ja piirrerrettyä viivoja ja pisteitä.
Entäs bitmapin laitto ruudulle? Osaatko sanoa mitä vikaa kyseisessä koodissa on? Tuota mietin eilen ainakin neljätuntia, ja mielestäni se on tehty aivan esimerkkien mukaisesti.
case WM_PAINT:
{
HBITMAP bmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_KUVA));
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
SetPixel(hdc,100,10,RGB(255,0,255)); //testataan että piirto onnistuu
HDC hdcMem;
RECT rc;
GetClientRect(hwnd,&rc);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem,bmp);
BitBlt(hdc,0,0,100,100,hdcMem,0,0,SRCCOPY);
DeleteDC(hdcMem);
EndPaint(hwnd, &ps);
}