Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
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


AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
GTA 6 su Xbox Cloud Gaming: niente strea...
NZXT presenta i nuovi H7 e H5, arrivano ...
Apple prepara un'app per trasformare i M...
C'è ancora vita per il Tesla Cybe...
Black Friday in anticipo e offerte a tem...
Mac mini M6 a 899€, Mac Studio M5 Max co...
Steam svela gli FPS dei giochi su Deck (...
Non solo Siri: l'intelligenza artificial...
La nuova mossa di Instagram: i filtri de...
RTX 5080 da 3.000 dollari e niente versi...
Amazon taglia i prezzi dei nuovi POCO: X...
Claude ora partecipa alle riunioni e pre...
Android Auto: addio ad Android 9 e 10, o...
Reddit lancia Reddit Reviews: recensioni...
NVIDIA dice di aver progettato Vera per ...
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: 10:30.


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