Hacken van LaserCAD (2 / 4 stap)

Stap 2: Hoe het werkt...

Lettertypeselectie

LaserCAD maakt gebruik van Microsofts GDI + bibliotheek voor het beheer van lettertypen. Wanneer u een lettertype selecteert in de vervolgkeuzelijst op het tekstvak bewerken wordt een lijst met beschikbare lettertypen weergegeven. Nadat u tekst invoeren en klik op Ok, LaserCAD de naam van de lettertypefamilie opgehaald uit de drop lijst en toegangsbewijs voor GDI + met behulp van code die er ongeveer zo uitziet als dit:

Hier is pwzFontFamily de tekenreeks die is getrokken uit de ComboBox lettertype. fSize is een float met de grootte van het lettertype grootte drop-down en iStyle vlaggen voor vet, cursief en onderstrepen (enz.)

Wanneer deze constructor wordt aangeroepen, de Microsoft code (de bron is beschikbaar) roept GdipCreateFont() doorgeven van vergelijkbare gegevens. Als een overeenkomende lettertype niet kan worden gevonden en foutcode geretourneerd en wordt de Microsoft code schakelt dan over naar een generieke San Serif-lettertype als weergegeven hieronder:


Zoals gezegd, om het juiste lettertype van LaserCAD als-is, je moet weten als het lettertype dat u hebt geselecteerd vet of cursief, (zeldzame) onderstrepen opgenomen in de lijst van de stijl aan GdipCreateFont doorgegeven moet. Een lettertype als Monotype Corsiva bestaat bijvoorbeeld alleen een gecursiveerd. Als Gdiplus::FontStyle::FontStyleRegular wordt doorgegeven aan GdipCreateFont, zoals het geval zijn zal als een van de knoppen voor vet, cursief of onderstreping niet is ingeschakeld, GdipCreateFont zullen niet vinden de alleen-cursief Monotype Corsiva en de generieke San Serif-lettertype wordt gebruikt.

De correctie van de selectie lettertype

Dit probleem kunt die wij de volgende code te gebruiken zal als het geselecteerde lettertype vet, cursief, onderstrepen of normaal ondersteunt:

Zodra we welke stijlen weten de lettertypeondersteuning wij kunnen onbruikbaar maken de knoppen die niet van toepassing. Als het lettertype geen ondersteuning biedt voor FontStyle::FontStyleRegular maar biedt ondersteuning voor vet of cursief, zal een van deze worden gecontroleerd. Als er slechts één wordt ondersteund zal het ook worden uitgeschakeld zodat het niet kan worden uitgeschakeld.

Om te kunnen om dit te doen, onderscheppen ik de bewerken tekst dialoogvenster van DialogProc terugbellen. Dit kan gebeuren via subclassificering, maar een andere techniek werd gebruikt hier die buiten het bestek van dit artikel valt. De originele code kan worden vastgesteld door een wijziging van de bestaande DialogProc om het zelfde ding doen.

Tekstinvoer en Rendering

De bug met de niet-ANSI (nietEngelse) tekstinvoer treedt op omdat de DialogProc leest de tekst van het besturingselement voor bewerking met een ANSI-functie, zoals GetDlgItemTextA. Het venster zelf (zoals met de meeste besturingselementen bewerken) staat voor het aanhouden van Unicode-tekst is maar de aanroep van GetDlgItemTextA zal niet zitten kundig voor de tekens correct vertegenwoordigen en zal deze vervangen door vraagtekens of andere vervangende tekens.

Om dit te verhelpen, omdat ik gemakkelijk de bestaande code niet wijzigen, heb ik een haak op de Windows API EndDialog geplaatst. Mijn haak functie wordt hieronder weergegeven:

Het werkt door het lezen van de tekst van het besturingselement voor bewerking voordat het dialoogvenster wordt gesloten en dat tekst op te slaan in een globale variabele: g_wstrLastKnownText.

De laatste stap is het aansluiten van de GDI +-functie die wordt gebruikt voor het maken van de tekst: GdipAddPathString. Wanneer het wordt aangeroepen, vervang ik gewoon de tekst die wordt doorgegeven aan het met de tekenreeks die ik gered van het besturingselement voor bewerking. Helaas moest de tekst die werd wordt doorgegeven aan de GdipAddPathString door de LaserCAD opnieuw terug in een Unicode-tekenreeks moet worden geconverteerd voordat het kan worden verzonden naar GdipAddPathString, maar de schade was al gedaan. Hier is mijn vervanger voor GdipAddPathString:

Met dat gedaan, is het nu mogelijk om niet-ANSI-tekst invoeren in het besturingselement voor bewerking en hebben het goed wordt weergegeven voor Laser snijden / graveren!

De noodzakelijke correctie

De code van de LaserCAD kan worden vastgesteld door gewoon met behulp van Unicode (wchar_t) in plaats van ANSI (char) teken buffers bij het lezen van de tekenreeks van het besturingselement voor bewerking. Zolang het nooit geconverteerd naar een ANSI-tekenreeks het zal goed wordt weergegeven wanneer de doorgegeven aan GdipAddPathString.

Gerelateerde Artikelen

Hacken van een RC auto met Arduino en Android

Hacken van een RC auto met Arduino en Android

(Als je dit Instructable, vergeet dan niet te stemmen (boven: rechts hoek vlag). het is concurreren op ROBOTICA en sensoren wedstrijden. Heel hartelijk bedankt! ;-)Telkens wanneer ik wandelen in een speelgoedwinkel en afstandsbediening auto's in het
Hacken van een wenkende kat

Hacken van een wenkende kat

Als wandelen door Shanghai, of andere steden in China, er is een ding u zult zien in de vele winkels, restaurants en andere plaatsen: de Maneki Neko, ook bekend als de wenkende kat. De meeste van hen hebben een mechanisme in hen, waarmee een van hun
Concept van het hacken van de visuele

Concept van het hacken van de visuele

Hallo vrienden.In dit instructable, zal ik laten zien u over het hacken van de visuele, hoe het werkt, de gevolgen daarvan voor onze levens & preventie hiervan.Wat is visuele hacken?Visuele hacking betekent stelen of het verzamelen van iemands PC of
Hacken van de nieuwste versie van nietjes 'Easy' knop en het bouwen van een eenvoudige fysieke activiteit herinnering tool

Hacken van de nieuwste versie van nietjes 'Easy' knop en het bouwen van een eenvoudige fysieke activiteit herinnering tool

Ik volgde dit instructable hack de Staples Easy Button en bouwen van een hulpmiddel dat doet me denken aan elke 15 minuten om fysiek actief te zijn. De knop die ik bij Staples gekocht had interne circuits dat enigszins verschillend van degene die zij
Hacken van de Spy Video Trakr met Frickin' Laser balken... En raketten!

Hacken van de Spy Video Trakr met Frickin' Laser balken... En raketten!

Met dank aan Hans CPT.Ik kocht een Lanceerinrichting van de Raket USB-aangedreven schuim, die heeft de pan & tilt, en zelfs een gericht op laser! Ik ben het aandrijven van de Trakr van interne USB-poort, en onder controle met de GPIO lijnen.Stap 1: D
Hacken van Microsoft Office Outlook-postvak in voor e-mail adressen

Hacken van Microsoft Office Outlook-postvak in voor e-mail adressen

hebt u wellicht een ton van e-mailadressen op de loer in de brievenbus van uw Microsoft Office-e-mail maar u hebt niet had een gemakkelijke manier om hen te krijgen. Ik had dit probleem, dus ik een manier bedacht om gemakkelijk halen alle deze e-mail
Het hacken van de Sony ECM-AW3 Bluetooth-microfoon. Voeg uw eigen mic input-aansluiting. De nieuwe ECM-AW4 heeft de input, zodat ze kunnen hebben gelezen mijn hack.

Het hacken van de Sony ECM-AW3 Bluetooth-microfoon. Voeg uw eigen mic input-aansluiting. De nieuwe ECM-AW4 heeft de input, zodat ze kunnen hebben gelezen mijn hack.

Dit is een kleine hack die ik gepubliceerd in mijn blog enige tijd geledenhttp://www.comeseemy.Photos/blog/Hacking-the-Sony-...HET SAAI DEEL OVER HOE IK DE MICROFOON HACKIk heb een set van Sony ecm-aw3 microfoons. Ze zijn goed voor het geld dat ze wa
Een andere methode voor het hacken van de Cuisinart SupremeGrind voor Espresso

Een andere methode voor het hacken van de Cuisinart SupremeGrind voor Espresso

dit instructable zal detail een andere methode om te wijzigen uw Cuisinart SupremeGrind voor espresso. Dit is een alternatieve methode aan geboden door 'sehrgut' recht 'Hacken van de Cuisineart SupremeGrind voor Espresso'. I recommend highly lezing d
Hacken van Pandemic 2

Hacken van Pandemic 2

hacken pandemie II met Cheat Engine 5.4Stap 1: Krijgen wat we nodig hebbenDisclaimer-ik ben niet verantwoordelijk voor alles wat u doen met deze kennis die illegale en/of dom. Dit is voor educatieve doeleinden. * wink wink *We hebben voor het downloa
Hacken van de CharlieCube

Hacken van de CharlieCube

Dit instructable, is over de charliecube, en haar over hacken, en hoe ik een spreadsheet gebruikt om hack een LED-kubus.Om te beginnen ik denk dat ik moet uitleggen wat een charliecube is. Een charliecube is een 4 x 4 x 4 3D RGB LED cube of 64 RGB LE
Hacken van een Windows 2000-systeem Through IPC$

Hacken van een Windows 2000-systeem Through IPC$

dit Instructable over hacken is alleen voor educatieve doeleinden (of goed) niet voor kwaadwillige daden. Het is niet raadzaam om te doen of dit Instructable uitvoeren. Het kan gevaarlijk zijn. Nogmaals, dit is alleen voor educatieve.Voordat u begint
WiFi wachtwoord met Kali & preventie van het hacken van WPS ingeschakeld.

WiFi wachtwoord met Kali & preventie van het hacken van WPS ingeschakeld.

Hallo vrienden,In dit instructable, ik heb aangetoond hoe te kraken WPS ingeschakeld WiFi wachtwoord met Reaver in Kali Linux & hoe om te voorkomen dat uw WiFi tegen hackers.omdat tenzij u begrijpt het proces van WPS ingeschakeld hacken, u kan niet v
Hacken van een RC auto

Hacken van een RC auto

RC auto's zijn echt leuk om te kappen en zij bieden goede chasis voor lage prijs, robots maken maar het selecteren van een te maken is een pijn in de as met miljoenen type. Mijn broertje had zijn kortgeleden jarig geweest en ik wilde hem iets echt co
Hacken van de omx bestanden van OMAX Intelli-CAM™ voor de Waterjet OMAX

Hacken van de omx bestanden van OMAX Intelli-CAM™ voor de Waterjet OMAX

Dit is een zeer technisch instructable richt op diegenen die niet krijgen wat ze willen van OMAX Intelli-CAM™, de meegeleverde CAM software voor OMAX waterjets met A-jets (5-as heads). Gelukkig is Intelli-CAM™ alleen nodig bij het doen van 5-as bezui