Hacking LaserCAD (2 / 4 paso)

Paso 2: Cómo funciona...

Selección de fuente

LaserCAD utiliza la biblioteca GDI + de Microsoft para la gestión de fuentes. Cuando se selecciona una fuente de la lista en el cuadro de texto editar desplegable se muestra una lista de fuentes disponibles. Después de introducir texto y haga clic en aceptar, LaserCAD copia el nombre de la familia de fuentes de la lista y pasa a GDI + utilizando el código que se ve algo como esto:

Aquí pwzFontFamily es la cadena de texto tirada de la lista desplegable Font. Fname es un flotador con el tamaño del fuente tamaño desplegable y iStyle tiene banderas para negrita, cursiva y subrayado (etc..)

Cuando se llama a este constructor, el código de Microsoft (fuente está disponible) llama GdipCreateFont() pasando información similar. Si no se puede encontrar una fuente coincidente y devuelve código de error y el código de Microsoft luego cambia a una fuente genérica de San Serif como se muestra a continuación:

Como se mencionó anteriormente, para obtener la fuente correcta de LaserCAD como-es, tienes que saber si la fuente seleccionada necesita subrayado negrita, cursiva o (rara vez) incluido en la lista estilo pasó a GdipCreateFont. Una fuente como Monotype Corsiva, por ejemplo, sólo existe como una cursiva. Si Gdiplus::FontStyle::FontStyleRegular se pasa a GdipCreateFont, como será el caso si uno de los botones de negrita, cursiva o subrayado no está marcada, GdipCreateFont no se encuentra el sólo cursiva Monotype Corsiva y se utilizará la tipografía San Serif genérica.

La solución de selección de fuente

Para solucionar este problema que utilizaremos el siguiente código a si la fuente seleccionada admite negrita, cursiva, subrayado o Normal:

Una vez que sabemos que el apoyo de fuentes que podemos desactivar los botones que no se aplican los estilos. Si la fuente no es compatible con FontStyle::FontStyleRegular pero es compatible con negrita o cursiva, uno de ellos se controlará. Si sólo uno es compatible se también se deshabilitará para que no se apague.

Para poder hacer esto, interceptan llamada DialogProc de la editar texto del cuadro de diálogo. Esto podría hacerse a través de la creación de subclases, pero una técnica diferente fue aquí que está fuera del alcance de este artículo. El código original podría fijarse alterando la DialogProc existente para hacer lo mismo.

Entrada de texto y la representación

El error con texto no ANSI (no inglés) se produce porque el DialogProc lee el texto desde el control de edición utilizando una función de ANSI, como GetDlgItemTextA. La ventana sí mismo (como con la mayoría editar controles) es capaz de sostener el texto Unicode pero la llamada a GetDlgItemTextA no serán capaces de representar los caracteres correctamente y reemplazarlos con signos de interrogación u otros caracteres de sustitución.

Para solucionar este problema, ya que no puedo cambiar fácilmente el código existente, he colocado un gancho en el API EndDialog de Windows. Mi función de gancho se muestra a continuación:

Funciona al leer el texto desde el control de edición antes de cerrar el cuadro de diálogo y guardar ese texto en una variable global: g_wstrLastKnownText.

El último paso es conectar la función GDI + que se utiliza para representar el texto: GdipAddPathString. Cuando se invoca, simplemente reemplazar el texto que se pasa a ella con la cadena que guarda desde el control de edición. Lamentablemente, el texto que se aprobó a GdipAddPathString por LaserCAD que pueden convertir en una cadena Unicode antes de que podría ser enviado a GdipAddPathString, pero el daño ya había sido hecho. Aquí está mi reemplazo para GdipAddPathString:

Con esto hecho, ahora es posible introducir texto no ANSI en el control de edición y renderizado correctamente para láser de corte / grabado!

La corrección necesaria

El código de LaserCAD podría fijarse simplemente usando Unicode (wchar_t) en lugar de búferes de caracteres ANSI (char) al leer la cadena en el control de edición. Como nunca se convierte en una cadena ANSI lo hará adecuadamente cuando se pasa a GdipAddPathString.

Artículos Relacionados

10 Hacks de la vida que necesita saber para un verano mejor!

10 Hacks de la vida que necesita saber para un verano mejor!

Aquí están 10 amazing consejos y trucos que puedes usar para impresionar a sus amigos y hacer su verano un poco más fácil.Había visto fotos de algunas ideas útiles en internet, pero no vídeos.  Hice esto con la esperanza de que todos ustedes disfrute
10 Hacks de la vida con el PVC #13

10 Hacks de la vida con el PVC #13

10 Hacks de la vida con el PVC #13[Ver VIDEO]Aquí le damos la 13ª edición a nuestra serie de "10 Hacks de la vida con el PVC". Construimos y probamos estos proyectos con éxito. Espero que usted puede beneficiarse de algunos de estos hacks de vid
Increíble vida Hacks para gente perezosa

Increíble vida Hacks para gente perezosa

Esto sobre algunos de los hacks de la vida útil que harán tu vida más fácil! Disfrutar dePaso 1: Cómo abrir fichas provechosamente Paso 2: Haga un pequeño agujero en el medio de la virutaAsegúrese de que usted haga el orificio en la parte delantera d
Hacks de vida 5 DIY con pajita | Simples trucos

Hacks de vida 5 DIY con pajita | Simples trucos

https://youtu.be/jIcEbcVQgQgPaso 1: Hack de vida 1 Gramanet! Hoy quiero mostrarles cómo hacer 5 vida Hacks con paja de beber, trucos sencillos que cambiarán tu vida!Paso 2: Vida hacks 2 ¿Le gusta beber a través de una paja? Pero, ¿qué podemos hacer c
10 Hacks de la vida con el PVC #12

10 Hacks de la vida con el PVC #12

10 Hacks de la vida con el PVC #12[VER VIDEO]Aquí es la 12ª edición de nuestra serie "10 Hacks de la vida con el PVC". Construimos y probamos estos proyectos con éxito. Espero que usted puede beneficiarse de algunos de estos hacks de vida impres
10 Hacks de la vida con mosquetones

10 Hacks de la vida con mosquetones

10 Hacks de la vida con mosquetones[VER VIDEO]Lifehacks son grandes técnicas, trucos, atajos o formas novedad de utilizar determinados productos en formas poco comunes para hacer la vida más fácil.Tomamos lo que comúnmente se utiliza en escalada en r
10 Hacks de la vida con el PVC #11

10 Hacks de la vida con el PVC #11

10 Hacks de la vida con el PVC #11[VER VIDEO]Aquí es la 11ª Edición de nuestra serie "10 Hacks de la vida con el PVC". Construimos y probamos estos proyectos con éxito. Espero que usted puede beneficiarse de algunos de estos hacks de vida impres
101 + Hacks de vida usando los palillos

101 + Hacks de vida usando los palillos

¿Piensa en palillos son sólo para los países del este? CREO QUE OTRA VEZ :)Aquí hay 101 + increíbles (e inusuales) cosas que puedes con los palillos en la cocina, comedor, garaje/taller, "Cueva de hombre", oficina, casa cuarto de baño, bibliotec
10 Hacks de la vida con el PVC #10

10 Hacks de la vida con el PVC #10

10 Hacks de la vida con el PVC #10[VER VIDEO]Aquí le damos la 10ª edición de nuestros 10 videos de Hacks de la vida. Había construido y había probado con éxito. Espero que usted puede beneficiarse de algunos de estos hacks de vida impresionante.Hacks
Gafas de madera Marcos Hack

Gafas de madera Marcos Hack

La madera es un material de gran - es barato, fácil de trabajar y parece agradable a la vista. Personas han hecho tablas de madera, sillas de madera, casas de madera e incluso los coches de madera!Pero cuando quería algunos marcos de gafas de madera
Amarra Hacks!!!

Amarra Hacks!!!

Zip lazos también son conocidos como cremalleras, bridas, bridas, lazos de manguera, y zap-correas, son herramientas de bajo costo, eficaces para sostener artículos juntos. Ataduras de cremallera fueron inventados en 1958 por una compañía eléctrica l
Canon batería interna luz de anillo Hack!

Canon batería interna luz de anillo Hack!

Aquí está mi nueva y mejorada versión de la luz del anillo de Canon Hack! Un tiempo atrás hice una versión con baterías externas (ya sea 3 AA o AAA o una batería de teléfono celular). Mientras las cámaras estaban todavía impresionantes, necesaria la
Hack de LED para sustituir la bombilla de la lámpara del halógeno

Hack de LED para sustituir la bombilla de la lámpara del halógeno

desmonte y hack un Philips plano sería el equivalente de 100 Watts para crear una bombilla plana capaz de reemplazar una bombilla de halógeno de 100 vatios.Paso 1: Comprar la bombilla LED Comprar una Philips plana sería el equivalente de 100 Watts de
Geocache Hacks: tienda de belleza

Geocache Hacks: tienda de belleza

Si estás en búsquedas del tesoro, mapas de tesoro, aventurando su diario camino trillado, y feminismo, este instructable es para ti! Aquí aprenderás cómo hackear viejos envases de maquillaje a reutilizar para geocaching. El concepto detrás de elegir