Hacking LaserCAD (2 / 4 steg)

Steg 2: Hur det fungerar...

Val av teckensnitt

LaserCAD använder Microsofts GDI +-bibliotek för att hantera teckensnitt. När du väljer ett teckensnitt från nedrullningsbara listan för redigera textrutan visas en lista över tillgängliga teckensnitt. När du skriver text och klicka på Ok, LaserCAD kopierar teckensnittsfamilj namnet från listan drop och övergår till GDI + med hjälp av kod som ser ut ungefär så här:

Gdiplus::Font teckensnitt (pwzFontFamily, fSize, iStyle);

Här är pwzFontFamily textsträngen drog från Font ComboBox. fSize är en flottör med storlek från font storlek drop-down och iStyle har flaggor för fet, kursiv och understruken (etc.)

När denna konstruktor anropas, Microsoft-koden (källkod är tillgänglig) kallar GdipCreateFont() passerar liknande information. Om en matchande teckensnitt inte kan hittas och felkod returneras och Microsoft-koden sedan växlar till ett generiskt San Serif-teckensnitt som visas nedan:



Som nämnts tidigare, för att få rätt teckensnitt från LaserCAD som-är, du måste veta om teckensnittet du har valt behöver fet, kursiv eller (sällsynt) understrykning med i listan skickas till GdipCreateFont. Ett teckensnitt som Monotype Corsiva finns for example endast som en kursiv. Om Gdiplus::FontStyle::FontStyleRegular skickas till GdipCreateFont, så kommer vara fallet om någon av knapparna fet, kursiv eller understrykning inte kontrolleras, GdipCreateFont inte kommer att hitta den kursiv-bara Monotype Corsiva och generiska San Serif typsnitt ska användas.

Font val av Fix

Åtgärda problemet vi kommer att använda den följande koden till om teckensnittet användas av fet, kursiv, understrykning eller Normal:

När vi vet vilka formatmallar som teckensnitt stöd vi kan inaktivera de knappar som inte gäller. Om teckensnittet inte stöder FontStyle::FontStyleRegular men fet eller kursiv, kommer en av dessa att kontrolleras. Om bara en stöds inaktiveras det även så att det inte kan vara avstängda.

För att kunna göra detta, avlyssna jag redigera Text dialogrutan DialogProc motringning. Detta kan göras via skapa underklasser, men en annan teknik som används här som är utanför ramen för denna artikel. Den ursprungliga koden kan fastställas genom att ändra de befintliga DialogProc för att göra samma sak.

Textinmatning och Rendering

Bugg med icke-ANSI (icke-engelska) textinmatning beror på att DialogProc läser texten från redigeringskontrollen använder en ANSI-funktion som GetDlgItemTextA. Fönstret själv (som med de flesta redigeringskontroller) kan innehålla Unicode-text men anropet till GetDlgItemTextA kommer inte att kunna representera tecknen korrekt och kommer att ersätta dem med frågetecken eller andra substitut tecken.

För att åtgärda detta, eftersom jag inte kan enkelt ändra den befintliga koden, har jag placerat en krok på Windows API EndDialog. Min krok funktion visas nedan:

Det fungerar genom att läsa texten från redigeringskontrollen innan dialogrutan stängs och lagra texten i en global variabel: g_wstrLastKnownText.

Det sista steget är att koppla den GDI +-funktion som används för att återge texten: GdipAddPathString. När den anropas, ersätta jag helt enkelt den text som skickas till det med strängen jag sparat från redigeringskontrollen. Tyvärr fick den text som skickades till GdipAddPathString av LaserCAD omvandlades till en Unicode-sträng innan det kunde skickas till GdipAddPathString, men skadan var redan skedd. Här är min ersättare för GdipAddPathString:

Med det gjort, är det nu möjligt att ange icke-ANSI-text i redigeringskontrollen och har det återges korrekt för Laser skärning / gravyr!

Behövde fixa

LaserCAD koden kan fastställas genom att bara använda Unicode (wchar_t) i stället för ANSI (char) karaktär buffertar när man läser strängen från redigeringskontrollen. Så länge som aldrig konverteras den till en ANSI-sträng det återges korrekt när skickas till GdipAddPathString.

Se Steg
Relaterade Ämnen

10 Hacks life med PVC #13

10 Hacks life med PVC #13[Se VIDEO]Här är den 13: e upplagan till vår "10 Hacks Life med PVC" serie. Vi byggt och testat dessa projekt med framgång. Jag hoppas du kan dra nytta av några av dessa awesome life hack.Hacks ingår:1. benskydd2. resa h...

Fantastiska livet Hacks för lata människor

Det här om några av de användbara livslängd Hack som gör ditt liv lättare! Njut avSteg 1: Hur öppna marker fördel Steg 2: Gör ett litet hål i mitten av chipSe till att du gör hål på framsidan av chipet.Steg 3: Rip wrapper genom att rulla den i en cir...

DIY 5 Life Hacks med dricka halm | Enkla knep

https://youtu.be/jIcEbcVQgQgSteg 1: Life hack 1 Hiii! Idag vill jag visa dig hur man gör 5 Life Hacks med dricka halm, enkla knep som kommer att förändra ditt liv!Steg 2: Life hacks 2 Gillar du dricka genom sugrör? Men vad kan vi göra med plast strån...

19 oväntat Life Hacks med String

Det finns en uppsjö av kreativa livet hacks med string-- och vi pratar inte bara om att skära vinflaskor eller PVC-rör...Här är 19 awesome-- och oväntade!--life hacks att vi alla behöver i våra liv!Steg 1: Få en Ring loss från fingretVisste du att du...

10 Hacks life med PVC #12

10 Hacks life med PVC #12[TITTA PÅ VIDEO]Här är den 12: e upplagan till vår "10 Hacks Life med PVC" serie. Vi byggt och testat dessa projekt med framgång. Jag hoppas du kan dra nytta av några av dessa awesome life hack.Hacks ingår:1. limbo Stand...

10 Hacks life med Carabiners

10 Hacks life med Carabiners[TITTA PÅ VIDEO]Lifehacks är bra metoder, tricks, genvägar eller nyhet sätt att använda vissa produkter på ett ovanligt sätt att göra livet lättare.Vi tog vad är vanligt förekommande i rock klättring och vandring och använ...

10 Hacks life med PVC #11

10 Hacks life med PVC #11[TITTA PÅ VIDEO]Här är den 11: e upplagan till vår "10 Hacks Life med PVC" serie. Vi byggt och testat dessa projekt med framgång. Jag hoppas du kan dra nytta av några av dessa awesome life hack.Hacks ingår:1. mobiltelefo...

En DVD spelaren hacka

detta är en beskrivning av öppen källkod/öppen hårdvara projekt av en fjärrkontrollerad Arduino (Freeduino) baserade Klocka/termometer utnyttja strömförsörjning och VFD panel från en trasig DVD-spelare i en skräddarsydd akryl hölje. Syftet med projek...

Billigt och enkelt Clock hacka för tunga sliprar

detta är min första Instructable så jag hoppas att alla njuter.Jag brukar ha problem att komma ur sängen på morgonen. Jag har försökt ställa in flera klockor, att sätta klockor acroos rummet, och ändå jag hitta ett sätt att stänga av dem och få tillb...

IKEA Clock hacka: Gummy Bear klockan

Hej! Här är en video av mig visar du hur till hacka en billig IKEA klocka för att göra en awesome färgglada och roliga gummy bear klocka! Njut!Min Youtube-kanal...

2 steg kommandofil "hacka"

Detta är en annan enkel men lite lång tid att göra dator knep som gör det verka som om du hacking återigen det är helt ofarligtSteg 1: Skapa detFör att göra detta måste du anteckningar (Windowsoperativsystem)Skriv i följandeutanförtiteln ditt valfärg...

Amazon Dash knappen hacka

Den 31 mars 2015 lanserade Amazon Amazon Dash knappen i ett försök att ändra paradigm som vi regelbundet köper förbrukningsvaror.10 augusti, publicerar Ted Benson Detaljer för en ganska invecklade Amazon knappen hacka på medium.com26 augusti, en meda...

Brother HL-2140 tonern slut fel hacka

En av de mest frustrerande problem för en collegestudent får en toner fel efter utskrift 18 till 20 sidor på din slutliga papper på grund av nästa dag. Allt detta kunde ha varit lätt undvika om jag inte dra ut på tiden, men som student, allt detta är...

2 steg PB färskost florsocker hacka

Jag gick till butiken söker färdiga jordnötssmör glasyr för en kaka och kunde inte hitta några. Så jag satte på min tänkande hatt och gjorde detta "hack" som till slut blev helt utsökt!Steg 1: ingredienser1 behållare med Cream Cheese glasyr (jag...

Gräsklippare laddare Connector hacka

Min fru hade problem med kontakten för ackumulatorn för våra gräsklippare, hon var inte kunna enkelt koppla det så att det besegrade syftet med att ha en lätt att starta gräsklippare.Jag hittade en manlig till kvinnlig DC förlängning för $3 i en loka...

120V LED-lampa på 12VDC, 190MA. Hacka

jag ville ha en 12 v glödlampa för min hem RE system som såg ut och fungerade som en normal ljus, ljusstyrka etc. Men en som inte använder en hel del makt. Jag hittade dessa på LOWES för under $10 och bestämde det var dags att hacka:)Steg 1: Modet i...

Fet eyeliner hacka.

Eyeliner är en kosmetisk används för att definiera ögonen. Det appliceras runt konturerna av det synar att skapa en mängd olika estetiska effekter. Smink är vanligtvis används av kvinnor och flickor.Eyeliner användes först i forntida Egypten och Meso...

Eld Tube - dricka sugrör hacka

Det är rätt. Avfyra rör. Dessa små killarna är en bra backup att hålla med dig camping eller på flykt från zombies. Håll i väskan eller fickan. För närvarande, gör jag dessa med två matcher, en cottonball i vaselin och lite strikepaper/sandpapper för...

5 enkla batteri Hacks

Hej alla, detta är vetenskap Gerts. Jag kommer att visa dig några innovativa sätt att använda batterier för olika saker. De kräver mycket lite verktyg och kommer att spara pengar. Som Pinkie Pie säger: nog småprat! Tid är godis!Steg 1: Att få vissa a...