15/12: Executar un quadre de diàleg en Win32 i c++

Una de les coses a les que ens malacostuma l'assistent de programes Win32 de Visual Studio és a fer les coses més simples molt més complexes del que han de ser... Per això moltes vegades per no complicar-me la vida quan havia de fer un programa que només contingués un quadre de diàleg.

Calculadora de xarxa


Una opció seria crear els controls en temps d'execució en la finestra principal, però sovint és massa feina per fer un programa simple.

El procediment que feia servir inicialment era fer servir l'assistent del Visual Studio per crear un projecte bàsic i en el WndProc() capturava el missatge WM_CREATE (que es rep abans de mostrar la finestra) i allà executava el quadre de diàleg i després matava el programa.

...
switch (message)
{
case WM_CREATE:
DialogBox(hInst, (LPCTSTR)IDD_DIALEG, hWnd, (DLGPROC)Dialeg);
PostQuitMessage(0);
break;
...

Això feia que es veiés només el quadre de diàleg i que el programa es morís abans de mostrar la finestra principal (recordo que en el moment en que es rep el WM_CREATE encara no tenim la finestra visible)

Però està clar que hi ha formes millors de fer-ho. Perquè crear una finestra principal si no ens fa falta?

» Llegir més

Categoria: Programació | Fet per: Xavier | | Afegir comentari

15/12: Programació fent servir l'API Win32

Windows
Actualment hi ha moltes formes de fer programes amb Windows. La majoria a través de les diferents llibreries intenten simplificar-ne l'entorn de programació fent-lo més amè per l'usuari:


  • La biblioteca MFC (Microsoft Foundation Class) encapsula gran part de la API de Win32, encara que no tota i genera una jerarquia de classes en forma orientada a objectes. MFC ofereix classes que representen objectes fonamentals de Windows, com finestres, quadres de diàleg, pinzells, etc.. . Les funcions membre d'aquestes classes es fan servir per obtenir les funcions més importants de la API associades a l'objecte principal.
    La biblioteca MFC tradicionalment es considera bastant lenta.

  • La biblioteca ATL (Active Template Library) és un subconjunt de classes de C++ basades en plantilles que faciliten la creació d'objectes petits i ràpids del model COM. ATL encapsula les API de Win32 i de la biblioteca de temps d'execució de C, però no tant com MFC. Es va crear perquè MFC feia massa grans els executables i això era un problema per Internet.

  • La biblioteca WTL (Windows Template Library) és una llibreria que s'assembla a MFC però està basada en plantilles i és menys extensa (no té classes per a sockets o base de dades) . Afegeix la possibilitat de treballar amb finestres a ATL. Està alliberada sota llicència GPL per Microsoft


Però no sé perquè sento una mena de passió per programar amb C++ i cridant l'API de Windows directament. Segurament deu ser una reminiscència de quan vaig començar a programar per Windows. Quan jo vaig començar ho vaig fer, com molta gent, fent servir Visual Basic. D'aquella època el que en recordo més era el seu funcionament lent, i que això em desesperava tant que fins i tot hi havia vegades que redissenyava varies vegades els mateixos trossos de programa per intentar trobar formes de fer-los més ràpids.

En el moment en que em van encarregar un programa que havia de fer una petita animació per pantalla em va obligar a aprendre a fer els programes amb C. I el mateix programa amb C++ i MFC anava visiblement molt més de pressa! Un cop entregat em vaig obligar a fer-lo fent servir C++ a pèl i només fer servir les crides a l'API... La velocitat era estratosfèrica...

Per això i perquè he vist que és difícil trobar-ne informació (Microsoft s'ha volcat completament en el .NET framework), si tinc temps, aniré posant uns quants articles basats en el que Microsoft anomena C++ non managed.

Per fer els exemples faré servir Visual Studio però no hi hauria d'haver cap problema per fer servir cap altre compilador que pugui compilar programes en Windows.

Categoria: Programació | Fet per: Xavier | | Afegir comentari

20/11: Problemes de teclat en els hosts Windows de VMWare Server 2.0 en Ubuntu Ibex

Un dels problemes que he tingut des de que he actualitzat el meu sistema a Ubuntu Intrepid Ibex ha estat que en la màquina virtuals en Windows XP que tinc per fer coses en Windows el teclat ha començat a fer el burro: No em funcionaven bé les tecles del cursor o les de av.pàgina. Per exemple la tecla del cursor avall feia que apareixes el menú de Windows. Això és molt emprenyador sobretot quan estas treballant amb un editor (en el meu cas en Visual Studio)... Només es pot rectificar anant a les posicions amb la rata.

Estava clar que el problema estava en que el mapeig de tecles de Ubuntu Intrepid no és el mateix que fa servir VMWare (dic de Intrepid perquè en la versió anterior funcionava bé).

Solució 1:Aquesta solució, que he comprovat que funciona, la he trobat a aquest bloc.

Per solucionar-ho he hagut de crear un arxiu que se n'encarregui de fer la traducció correcta. Això es pot fer en VMWare posant les equivalències correctes en l'arxiu "config" del directori de configuració:

joe ~/.vmware/config


I a dins s'hi ha de posar el mapejat correcte de les tecles que sembla que fallen.


xkeymap.keycode.108 = 0x138 # Alt_R
xkeymap.keycode.106 = 0x135 # KP_Divide
xkeymap.keycode.104 = 0x11c # KP_Enter
xkeymap.keycode.111 = 0x148 # Up
xkeymap.keycode.116 = 0x150 # Down
xkeymap.keycode.113 = 0x14b # Left
xkeymap.keycode.114 = 0x14d # Right
xkeymap.keycode.105 = 0x11d # Control_R
xkeymap.keycode.118 = 0x152 # Insert
xkeymap.keycode.119 = 0x153 # Delete
xkeymap.keycode.110 = 0x147 # Home
xkeymap.keycode.115 = 0x14f # End
xkeymap.keycode.112 = 0x149 # Prior
xkeymap.keycode.117 = 0x151 # Next
xkeymap.keycode.78 = 0x46 # Scroll_Lock
xkeymap.keycode.127 = 0x100 # Pause
xkeymap.keycode.133 = 0x15b # Meta_L
xkeymap.keycode.134 = 0x15c # Meta_R
xkeymap.keycode.135 = 0x15d # Menu


La idea és fer la equivalència de la codificació que fa la tecla (es pot veure amb el programa evdev) amb el que espera.

Solució 2:

Més tard he descobert que hi havia una solució més senzilla. Sembla que es podia solucionar el problema generant automàticament el fitxer d'aquesta forma:

echo 'xkeymap.nokeycodeMap = true' > ~/.vmware/config

Categoria: Linux | Fet per: Xavier | | Afegir comentari

10/11: QtCreator a Ubuntu Intrepid Ibex

D'entre les llibreries per realitzar programes n'hi ha una que m'agrada especialment, Qt. Des de que la versió de Windows és lliure, fer programes amb les llibreries Qt ens permet desenvolupar programes amb un entorn gràfic multiplataforma de forma realment senzilla.

Fins ara he estat fent servir KDevelop per fer els programes però la versió estable actual de KDevelop no és gaire amigable per desenvolupar programes fent servir Qt 4 (la propera versió de KDevelop 4 si que ho serà però pel meu gust està en un estat molt primerenc)

QtCreator
Per això quan he vist que s'ha creat un nou IDE multiplataforma per desenvolupar amb Qt: QtCreator, m'he decidit a provar-lo. Tot i que no estarà acabat fins a principis de l'any vinent (estem en la versió 0.9) les meves impressions en les proves que he fet han estat molt bones.

La instal·lació és realment senzilla. Es baixa el paquet autoinstal·lable de la seva web i simplement s'executa i es va responent a quin lloc el volem instal·lar. Una instal·lació més semblant a les de Windows que a les de Linux. Al acabar et deixa una icona a l'escriptori per poder-lo iniciar ràpidament

Instal·lació


Al arrancar-lo es pot veure clarament que Nokia va comprar aquestes llibreries :-)
Execució de QtCreator


M'agrada de l'entorn la solució dels botons de debug i d'execució amb l'estat del projecte a sota a l'esquerra.

» Llegir més

Categoria: Programació | Fet per: Xavier | | Afegir comentari

06/11: Actualització a Ubuntu 8.10 Intrepid Ibex

Intrepid Ibex
Em sembla que és la primera vegada que l'actualització de versions d'Ubuntu i no m'ha deixat res desconfigurat ni inestable. Per ara les coses inicialment sembla que funcionen correctament.

Tot i això després de treballar-hi una mica he descobert que hi ha unes quantes coses que no m'acaben de convèncer:


  • KDE 4: Em sembla una interfície molt bonica però la forma de fer les coses és realment poc intuïtiva i ha deixat de tenir els millons d'opcions de configuració que tenia, l'escriptori ara no sé perquè serveix però va bastant malament i a més en determinats moments sembla que li agafen unes pauses molt rares amb les coses que poses a l'escriptori...
    Després de molts anys, em sembla que KDE4 m'acaba de convèncer de que em passi a GNOME. Adéu KDE!

  • Hi ha moltes millores en el NetWork Manager (un dels xurros més grans de Linux) però sembla que ara té molts problemes amb el xifrat WPA. Això abans funcionava perfectament, o sigui que s'ha espatllat...

    Després de que tot anés correctament a casa meva, he anat a la feina i ha estat totalment impossible connectar amb els punts d'accés WPA o WPA2 i en canvi si amb el WEP. Per més que ho he provat no hi ha hagut forma de connectar-hi mentre abans connectava correctament.

    Un cop de nou a casa tampoc podia connectar amb el meu punt d'accés (I pel matí anava!). Després d'insistir vàries vegades, i posar una contrasenya errònia al final ha connectat... Fa mala pinta.



I res més! Recordo tot el que em va passar en les anteriors actualitzacions (1) i (2) i estic al·lucinant... Sembla que la cosa millora de veritat

Categoria: Linux | Fet per: Xavier | | Afegir comentari

16/10: Crear usuaris a l'Active Directory des de consola

Windows 2003 server
Ara que Microsoft ja no considera l'entorn de consola com un "pecat" i que pensa el treball amb la consola facilita les coses als administradors he de reconèixer que cada dia descobreixo coses noves que es poden fer des de la consola dels sistemes Windows que m'agraden força. L'entorn de comandes en els sistemes Microsoft cada dia és més potent i permet que l'administració remota dels seus sistemes sigui molt més senzilla (sense haver de recórrer a innumerables clics de ratolí) i sobretot es facilita l'automatització de tasques via scripts.

Encara estic avaluant el que Microsoft anomena Powershell i que és una millora del shell amb possibilitats de creació d'scripts molt interessants.

Però l'altre dia havia de fer un alta massiva d'usuaris i em vaig trobar que els scripts en VBA que es poden trobar per Internet no m'acabaven de convèncer (fins i tot en alguns hi havia comentaris de gent en alguns que deien que no funcionaven bé... ) i no tenia a l'abast el CD de Windows 2003 per treure'n l'script que porta per fer altes d'usuaris massives. I buscant per Internet vaig descobrir una comanda que entre altres coses permet crear usuaris a l'Active Directory (AD) des de la consola: dsadd

DSadd sembla que només és un dels scripts de DS que estan formats per:

  • DSmod - Per modificar atributs de l'AD

  • DSrm - Per eliminar objectes de l'AD

  • DSmove - Per recolocar objectes dins l'arbre d'AD

  • DSadd - Afegir coses a l'arbre AD

  • DSquery - Per buscar objectes segons criteris

  • DSget - Per mostrar les propietats d'un objecte



Pel que he vist dsadd és el més important perquè trobo que les altres tasques és més complicat que calguin en un script. Dsadd permet afegir al AD equips, usuaris, grups, unitats organitzatives, contactes i quotes.

» Llegir més

Categoria: Windows | Fet per: Xavier | | Afegir comentari

16/03: Nous pecats

Pecat de fotografia
Feia molt de temps que no postejava perquè estava molt embolicat amb la feina.

Ara per compensar faré un post humorístic (fa gràcia però és veritat).

No sé si fa molt de temps que es coneix perquè si puc evitar-ho no miro mai les notícies però la església catòlica en una reunió de la Conferència Episcopal al santuari de Teram i a la Universitat Lateranense de Roma va definir que també són pecat:

1. Fer servir programes sense la llicència corresponent
2. Crear i difondre virus
3. Enviar correus electrònics anònims o amb dades falses
4. Baixar música i pel·lícules d'Internet sense pagar
5. Enviar spam
6. La violació de la privacitat i la seguretat dels sistemes informàtics
7. Creació de llocs web pornogràfics i fer-los servir

Impressionant, ara ja no cal comprar la llicència de Windows, n'hi ha prou amb piratejar-la i anar-se a confessar :-)

A veure si tinc més temps i puc fer algun article més tècnic que en tinc uns quants de pensats...

Categoria: General | Fet per: Xavier | |

15/11: Firefox 3.0 sortirà amb molts errors

Firefox
Em sembla que la fundació Mozilla s'està equivocant per culpa del èxit que està tenint el seu navegador: Ara sembla que tenen previst treure la versió de Firefox 3.0 només arreglant un 20% dels errors que saben que té.

Em sembla una política errònia, de la mateixa forma que m'ha semblat malament cada vegada que ho ha fet Microsoft (el Windows Me va ser escandalós). No defensaré aquesta política només perquè es tracta de programari lliure.

Els terminis de publicació dels programes ha de ser determinat pels tècnics i no pels comercials! O ja no estem d'acord amb allò que dèiem fa uns anys: "Un dels avantatges del programari lliure és que al no dependre dels terminis comercials surt en el moment en que estigui preparat per fer-ho". Si Firefox 3.0 no està preparat, que no surti. És igual que els errors que es corregeixin siguin els més importants, ja que si es publica un programa amb un grapat d'errors coneguts, el que s'està publicant realment és un producte deficient.

Encara hi són a temps i espero que com deixen entreveure alguns comentaris, s'ho repensin i, si cal, incrementin el número de versions 'beta' per publicar un producte millor.

Via: ComputerWorld

Categoria: Programari Lliure | Fet per: Xavier | |

14/11: S'anucien els preus del Windows Server 2008

Windows
Sembla que per la nova versió de Windows Server tindrà només 5 versions que seran:

*Windows Server 2008 Standard: 999$ amb 5 llicencies de client.
*Windows Server 2008 Enterprise: 3.999$ amb 25 llicencies de client.
*Windows Web Server 2008: 469$.
*Windows Server 2008 Datacenter: 2.999$ per processador.
*Windows Server 2008 per sistemes Itanium: 2.999$ per processador.

Totes les versions estaran disponibles en 32 i 64 bits menys el darrer que només ho estarà en versió de 64 bits.

Si es vol les edicions Standard, Enterprise i Datacenter de 64 bits tindran la tecnologia de virtualització Hyper-V (Viridian) o sense (amb una petita retallada en el preu)

Windows 2008 estarà disponible el 27 de febrer de 2008.

Jo sóc molt crític amb els productes de Microsoft dedicats al consum del gran públic però no puc negar que en la seva gama Server estan a un nivell diferent: estan fent molt bons sistemes.

Categoria: Windows | Fet per: Xavier | |

08/11: Comprimir des de D3lphin en Ubuntu Gutsy en Zip i Rar

En l'actualització a Ubuntu 7.10 Gutsy s'ha canviat el gestor d'arxius Konqueror per D3lphin que en principi ha de servir de pont per Dolphin que serà el que hi haurà en KDE 4.0.

Però en el canvi, s'ha perdut una de les funcionalitats que jo feia servir a vegades: La possibilitat de comprimir els arxius en coses que no siguin .tar.gz o .tar.bz2 des del gestor. Ara d3lphin ha afegit un menú lateral en el que hi tenim diferents opcions entre les quals hi ha comprimir. Però en el cas de la compressió d'una carpeta només hi tenim la opció "Compress here" que simplement comprimeix la carpeta en tar.gz

Comprimir carpeta

Amb els arxius passa una cosa semblant, en aquest cas hi surt un menú desplegable però només té dues opcions: comprimir amb .tar.gz i .tar.bz2
Comprimir arxius

Com que a mi m'agradava tenir la possibilitat de comprimir amb altres format de compressió d'arxius (RAR, ZIP, 7Z, etc..) he decidit investigar com fer-ho

» Llegir més

Categoria: Linux | Fet per: Xavier | |