Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-01-2004, 21:59   #1
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
[Dev-C++] SetWindowLong e WindowProcedure

Sto cercando in tutti i modi di impostare una WindowProcedure personalizzata per un RichEdit, ma purtroppo SetWindowLong ha bisogno di un valore long, invece la WindowProcedure che sto cercando di impostare mi restituisce LRESULT, e sembra che MinGW non passi automaticamente l'indirizzo alla funzione.

Sto usando:
RichWndProc = (WNDPROC) SetWindowLong (hWnd, GWL_WNDPROC, EditWndProc);

e MinGW mi restituisce:
dllmain.cpp:47: cannot resolve overloaded function `EditWndProc' based on conversion to type `long int'.

Come posso fare ?
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2004, 23:29   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Re: [Dev-C++] SetWindowLong e WindowProcedure

Fai un cast a LONG !!!

RichWndProc = (WNDPROC) SetWindowLong (hWnd, GWL_WNDPROC, (LONG)EditWndProc);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2004, 20:05   #3
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
E secondo te non ci ho provato ?
Mi sembra che MinGW provi a farlo da solo, ma mi dà lo stesso risultato. Anzi mi pare che mi risponda "aggregated value when long expected" o qualcosa di simile.

__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2004, 20:28   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non è che mi dai un esempio corto che ripresenta il problema ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2004, 18:52   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
In questo momento non posso. Windows e i suoi crash... in pratica ho solo una finestra di Mozilla e il desktop vuoto...
Appena posso ti mando il codice incriminato...
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2004, 23:31   #6
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Allora...

In dllmain.cpp:

Codice:
#include <richedit.h>
#include <windows.h>

#include "codeedit.h"

const char *richedit20 = "riched20.dll";
const char *richedit32 = "riched32.dll";

HINSTANCE hInstance;
HINSTANCE hRichInst;
HWND hWnd;

CodeEdit::CodeEdit ()
{
}
CodeEdit::~CodeEdit ()
{
}

int
CodeEdit::Create (HWND hwOwner)
{
  int ownWidth, ownHeight;
  RECT ownClientRect;
  
  GetClientRect (hwOwner, &ownClientRect);
  ownWidth = ownClientRect.right;
  ownHeight = ownClientRect.bottom;
  
  hRichInst = LoadLibrary (richedit20);
  if (!hRichInst) hRichInst = LoadLibrary (richedit32);
  if (!hRichInst) return ERR_NORICHEDIT;
  hWnd = CreateWindow (RICHEDIT_CLASS, NULLSTR, EditWndStyle, 0, 0, ownWidth,
                       ownHeight, hwOwner, (HMENU) IDCODEEDIT, hInstance, NULL);
  if (!hWnd) return ERR_NOCONTROL;

  RichWndProc = (WNDPROC) SetWindowLong (hWnd, GWL_WNDPROC, (LONG) EditWndProc);
  SendMessage (hWnd, EM_SETOPTIONS, (WPARAM) ECOOP_OR, (LPARAM) ECO_AUTOWORDSELECTION);
  SendMessage (hWnd, EM_SETBKGNDCOLOR, (WPARAM) FALSE, (LPARAM) COLOR_WHITE);
  return ERR_NOERROR;
}

void
CodeEdit:: Destroy () //Incredibile, senza spazio, HardwareUpgrade me lo converte in uno smiley!
{
  DestroyWindow (hWnd);
  FreeLibraryAndExitThread (hRichInst, 0);
}

LPSTR
CodeEdit::GetText ()
{
  LPSTR result;

  GetWindowText (hWnd, result, GetWindowTextLength (hWnd));
  return result;
}

void
CodeEdit::SetText (LPSTR text)
{
  SetWindowText (hWnd, text);
}

void
CodeEdit::SetFont (LPSTR fName, int fSize)
{
  HFONT hNewFont;

  hNewFont = GetFont (fName, fSize);
    SendMessage (hWnd, WM_SETFONT, (WPARAM) hNewFont, MAKELPARAM (TRUE, 0));
  DeleteObject (hNewFont);
}

LRESULT CALLBACK
CodeEdit::EditWndProc (HWND hwnd, UINT msg, WPARAM wpar, LPARAM lpar)
{
  switch (msg) {
    case WM_KEYDOWN:
      int *key, *data;

      key = (int*)wpar;
      data = (int*)lpar;
      OnKeyDown (key);
      break;
    default:
    LRESULT RichResult;

      RichResult = RichWndProc (hwnd, msg, wpar, lpar);
      return RichResult;
      //return DefWindowProc (hwnd, msg, wpar, lpar);
  }
  return 0;
}

void
CodeEdit::SetKeyDownEvent (LPKEYDOWN EventKeyDown)
{
  OnKeyDown = *EventKeyDown;
}

BOOL APIENTRY
DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
{
  switch (reason)
  {
    case DLL_PROCESS_ATTACH:
      hInstance = hInst;
      break;
    case DLL_PROCESS_DETACH:
      break;

    case DLL_THREAD_ATTACH:
      break;
    case DLL_THREAD_DETACH:
      break;
  }

  return TRUE;
}
In CodeEdit.h:

Codice:
#ifndef _CODEEDIT_H_
#define _CODEEDIT_H_

#if BUILDING_DLL
  #define dllspec __declspec (dllexport)
#else /* Not BUILDING_DLL */
  #define dllspec __declspec (dllimport)
#endif /* Not BUILDING_DLL */

#include <windows.h>

//----------------------------------------------------------------------------//
#define IDCODEEDIT                                                      0x00CDED
//----------------------------------------------------------------------------//
#define ERR_BASE                                                        0x0CACCA
#define ERR_NOERROR                                                     0x000000
#define ERR_NORICHEDIT                                           ERR_BASE + 0x01
#define ERR_NOCONTROL                                            ERR_BASE + 0x02
//----------------------------------------------------------------------------//
#define NULLSTR                                                               ""
//----------------------------------------------------------------------------//
#define COLOR_BLACK                                                     0x000000
#define COLOR_WHITE                                                     0xFFFFFF
//----------------------------------------------------------------------------//



//----------------------------------------------------------------------------//
typedef void (FAR *KEYDOWN)(int*); typedef KEYDOWN *LPKEYDOWN;
//----------------------------------------------------------------------------//

class dllspec CodeEdit
{
  public:
    // constructor / destructor procedures
    CodeEdit ();
    virtual ~CodeEdit (void);

    // initialization / termination procedures
    int Create (HWND hwOwner);
    void Destroy ();
  
    // event handlers
    KEYDOWN OnKeyDown;
    void SetKeyDownEvent (LPKEYDOWN EventKeyDown);
  
    // standard functions and procedures
    void SetFont (LPSTR fName, int fSize);
    void SetText (LPSTR newtext);
    LPSTR GetText ();

  private:
  const static int  EditWndStyle = WS_VISIBLE | WS_CHILD | WS_VSCROLL |
                                   WS_HSCROLL | ES_MULTILINE | ES_NOHIDESEL |
                                   ES_WANTRETURN | DS_CONTEXTHELP;

  // Window procedures
  WNDPROC RichWndProc;
  LRESULT CALLBACK EditWndProc (HWND hwnd, UINT msg, WPARAM wpar, LPARAM lpar);
};

#endif /* _CODEEDIT_H_ */
E che nessuno mi rubi questo codice!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 04-01-2004 alle 23:33.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2004, 19:43   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
up
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Servizi in streaming sempre più c...
Anteprima della Leapmotor B03X: inizia l...
Anthropic accusa la Cina: Claude utilizz...
I satelliti Rassvet (Starlink russo) di ...
Un agente IA ha risolto un problema su W...
Cina: la CMSA potrebbe cambiare parte de...
68 mensilità di bonus per i dipen...
Rocket Lab ha fatto ricorso contro la de...
Nutanix rende disponibile Azure Virtual ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Oppo Find X10, X10 Pro Max e X10 E: conf...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v