[C con Clase] Controles de Windows API 32

Daniel de Dios El Ignorado daniel.dedios en hotmail.com
Dom Feb 9 22:54:48 CET 2020


Hola Salvador:

Gracias por la información.  Seguro que me será de ayuda en alguna ocasión el "hook", pero para los controles me da que no podré usarlo pues no me dice en que control se produce esa pulsación de tecla.  Buscando por Internet he encontrado esto, que tiene visas de servirme.

https://riptutorial.com/es/winapi/example/29347/umgang-mit-benachrichtigungsnachrichten-fur-allgemeine-steuerungen-innerhalb-der-c-plusplus---klasse

class MyToolbarControl {
public:
    MyToolbarControl(HWND hWndToolbar, HWND hWndNotifyParent = nullptr) : _Handle(hWndToolbar) {
        if (hWndNotifyParent == nullptr) {
            hWndNotifyParent = GetAncestor(hWndToolbar, GA_ROOTOWNER);
        }
        SetWindowSubclass(
            hWndNotifyParent , SubclassWindowProc, reinterpret_cast<UINT_PTR>(this), reinterpret_cast<DWORD_PTR>(this)
        );
    }
    ~MyToolbarControl() {
        RemoveWindowSubclass(
            hWndNotifyParent , SubclassWindowProc, reinterpret_cast<UINT_PTR>(this), reinterpret_cast<DWORD_PTR>(this)
        );
    }

protected:
    HWND _Handle;

    static LRESULT CALLBACK SubclassWindowProc(
        HWND hWnd, UINT Msg, WPARAM w, LPARAM l, UINT_PTR SubclassId, DWORD_PTR RefData) {
        MyToolbarControl * w = reinterpret_cast<MyToolbarControl *>(RefData);
        if (Msg == WM_NOTIFY) {
            NMHDR* h = reinterpret_cast<NMHDR*>(l);
            if (h->hwndFrom == w->_Handle) {
                // Handle notification message here...
            }
        }
        return DefSubclassProc(hWnd, Msg, w, l);
    }
};

Que si no he entendido mal, haría que un control, cambiara la función de respuestas de los eventos, por la función que definiera yo en mi programa.  Me falta probarlo.

En cuanto a los problemas con los fuentes y colores, ha de ser algún problema con los includes, pues parece que no reconoce las funciones como parte de una DLL, y parece que el link, espera resolver los problemas con una biblioteca estática.  (Por cierto, ¿como se indica que funciones ha de buscar en una DLL en concreto?)
¿Hay que indicar algo en los includes, o se ha de añadir la DLL, en cuestión en el Link como se con las bibliotecas estáticas?


Saludos
Daniel de Dios "El Ignorado"


________________________________
De: Cconclase <cconclase-bounces en listas.conclase.net> en nombre de Salvador Pozo <salvador en conclase.net>
Enviado: lunes, 3 de febrero de 2020 21:18
Para: cconclase en listas.conclase.net <cconclase en listas.conclase.net>
Asunto: Re: [C con Clase] Controles de Windows API 32

Hola:

Para capturar el teclado intenta usar un "hook", puedes consultar la documentación de ms:

https://docs.microsoft.com/en-us/windows/win32/winmsg/about-hooks

Con respecto al problema de usar colores en los edits, prueba a iniciar los controles comunes usando la función, creo que el mensaje WM_CTLCOLOREDIT requiere que se haga esto:
InitCommonControls o InitCommonControlsEx:

https://docs.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-initcommoncontrolsex

Hay ejemplos a partir del capítulo 47.

Suerte.

Hasta pronto.

--
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Con Clase: http://conclase.net
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20200209/42db0713/attachment-0001.html>


Más información sobre la lista de distribución Cconclase