Usuario: anónimo

Usuarios en línea: 1
Invitados: 1

FAQ

Mensaje

10m
Re: Controles de Windows API 32
U(Daniel de Dios) 2020-02-09 21:54:48  H

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@listas.conclase.net>  en nombre de Salvador Pozo <salvador@conclase.net>

Enviado: lunes, 3 de febrero de 2020 21:18

Para: cconclase@listas.conclase.net <cconclase@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@conclase.net

Blog con Clase: http://blogconclase.wordpress.com

Con Clase: http://conclase.net

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_______________________________________________

Lista de correo Cconclase Cconclase@listas.conclase.net

http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net

Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ