Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-01-2004, 22: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 03-01-2004, 00: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, 21: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, 21: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, 19: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 05-01-2004, 00: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 : 05-01-2004 alle 00:33.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2004, 20: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


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Samsung conferma l'arrivo di tre variant...
Sottile, veloce e con un'ottima autonomi...
Il top di gamma compatto di OnePlus &egr...
Modificare l'indirizzo Gmail è finalment...
Perché le GeForce RTX con pi&ugra...
Più tempo online non equivale a più disa...
Amazon Weekend: iPhone 17 Pro, robot asp...
TV OLED 65'' top di gamma al 50%: 144Hz,...
Londra si prepara al terremoto 'intellig...
Scope elettriche in offerta su Amazon: f...
iPhone 17 Pro a un nuovo minimo storico ...
DJI Mini 4 Pro Fly More Combo a 859€ su ...
Roborock in offerta su Amazon: QV 35A e ...
Crisi della RAM: Intel rassicura sul mer...
Dreame taglia i prezzi su Amazon: L40 Ul...
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: 04:20.


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