Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++ win32] Custom Message Cracker

    Salve,

    vorrei implementare un message cracker personale per poter creare dei metodi collegati ad ogni menuitem del menu:

    codice:
    #define STRICT
    #include <windows.h>
    #include <windowsx.h>
    
    #define IDM_BLOCK 800
    
    // Declare Custom HANDLE MSG //
    #define HANDLE_IDM_BLOCK(hwnd, wParam, lParam, fn) \
        ((fn)(hwnd), 0L)
    
    #define FORWARD_IDM_BLOCK(hwnd, fn) \
        (void)(fn)((hwnd), IDM_BLOCK, 0L, 0L)
    ///////////////////////////////
    
    // Default
    void Cls_OnDestroy(HWND hwnd);
    void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
    BOOL Cls_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
    
    // Custom
    void Cls_OnMenuBlock(HWND hwnd);
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	__try
    	{
    		switch (message)
    		{
    			HANDLE_MSG (hWnd, WM_CREATE, Cls_OnCreate);
    			HANDLE_MSG (hWnd, WM_COMMAND, Cls_OnCommand);
    			HANDLE_MSG (hWnd, WM_DESTROY, Cls_OnDestroy);
    		}
    	}
    
    	__except(EXCEPTION_EXECUTE_HANDLER) {}
    
    	return DefWindowProc(hWnd, message, wParam, lParam);
    }
    
    void Cls_OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify)
    {
    	__try
    	{
    		switch (id)
    		{
    			HANDLE_MSG (hWnd, IDM_BLOCK, Cls_OnMenuBlock);
    		}
    	}
    
    	__except(EXCEPTION_EXECUTE_HANDLER) {}
    }
    
    void Cls_OnMenuBlock(HWND hwnd)
    {
    
    }
    in pratica nella callback window WM_COMMAND mi porta a Cls_OnCommand() ma da la non posso gestire il menuitem IDM_BLOCK infanti non mi porta alla funzione Cls_OnMenuBlock() (portandosi dietro HWND) anche se credo di avre dichiarato bene la macro HANDLE_IDM_BLOCK (l'ho copiata da WM_DESTROY dal file windowsx.h la macro si porta appresso solo la HWND)

    L'errore quando eseguo il codice è:

    error C2562: 'Cls_OnCommand' : 'void' function returning a value

    ma a questo punto non capisco dove sbaglio!

    grazie
    Alla batteria dai retta ballA

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: [C++ win32] Custom Message Cracker

    Nella OnCommand devi scrivere

    codice:
    case IDM_BLOCK:
        Cls_OnMenuBlock(hWnd);
        break;
    e non trattare IDM_BLOCK con la HANDLE_MSG ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.