Miten ihmeessä windows sovelluksissa saadaan aikaiseksi vertikaalista tekstiä? Olen yrittänyt tätä createfont-funktiolla, mutta staattisten kontrollien teksti kääntyy pois näkyvistä, kun laittaa kulmaksi 90 astetta.
HFONT namy = CreateFont(16, 0, 900, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Arial"); NameY1 = CreateWindow("STATIC", "y-axis" , WS_VISIBLE | WS_CHILD | SS_LEFT,10,150,40,20,window2,NULL,g_hInst,0); SendMessage (NameY1, WM_SETFONT, (WPARAM) namy, MAKELPARAM(TRUE, 0));
Asiasta tietämättömänämietin voisiko 90o aiheuttaa jonkinlaisen nollalla jaon. Kun cos 90o = 0. ja kun laskemme kulmakerotoimen y=kx+b muotoiselle funkitoille, pystysuoraa ei pystytä toteuttamaan kulmakertoimen lähestyessä ääretöntä.
Heippa jospa!
menisikö unclockwise eli kokeile toimisiko näin päin!
HFONT namy = CreateFont(16, 0, -2700, 0,...
Näytti olevan sama efekti tuon -2700 kanssa. Kokeilin kääntää tekstiä 10 astetta kerrallaan ja teksti vain pikku hiljaa kääntyy pois näkyvistä, koska piste jonka suhteen tekstiä käännetään on staattisen ikkunan yläreunassa. Viimein, kun on kääntänyt 90 astetta, koko teksti häipyy näkyvistä.
Heippa jospa!
Mitä tarkoitat, "kääntyy pois näkyvistä"? Onko vika itse tekstissä vai piirretäänkö se vain väärään paikkaan (ikkunan ulkopuolelle)? Jälkimmäisessä tapauksessa pitäisi varmaankin vain muuttaa tekstin sijoittelua ikkunassa.
jospa kirjoitti:
HFONT namy = CreateFont(16, 0, 900, 0, FW_BOLD, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "Arial");
Meneekö tuo niin, että teksti piirretään 16 pikseliä yläreunasta ja 0 pikseliä vasemmasta reunasta? Mikäli arvaus menee edes lähelle saattaa ongelman ratkaisu olla yllättävän lähellä.
Tarkoitan poiskääntymisellä nimenomaan, että teksti piirretään ikkunan ulkopuolelle, itse tekstissä ei ole vikaa.
Tuolla 0-leveydellä ei ole merkitystä:
"nWidth [in]:
Specifies the average width, in logical units, of characters in the requested font. If this value is zero, the font mapper chooses a closest match value. The closest match value is determined by comparing the absolute values of the difference between the current device's aspect ratio and the digitized aspect ratio of available fonts."
Sain asian korjattua ainakin siten, että lisäsin kenttään tyhjiä rivejä ja käytin SS_RIGHTJUST tyyliä. En tiedä onko paras mahdollinen ratkaisu...
NameY1 = CreateWindow("STATIC", "\n\n\ny-axis" , WS_VISIBLE | WS_CHILD | SS_RIGHTJUST,10,150,20,150,window2,NULL,g_hInst,0);
Aihe on jo aika vanha, joten et voi enää vastata siihen.