Nbr saisi > 0xffffffff ? (win32, vc++, asm)

Description

Tout dans le zip pour recompiler.
int bnatoul(char *psz, unsigned long *pDwrd)
remplacera int = atoi(char *psz) de bibli C.
Si bnatoul() retourne 0, nbr sera dans *pDwrd
sinon *pDwrd indefini car overflow.
Tes simple d'emploi et PERFORMANT.
Prog graphique pour tester, deja dans zip.

Source / Exemple :


#include <windows.h>
#include "resource.h"
#include "Brunews.h"

WNDPROC procEdNum;
HWND hed;
DWORD dwres;
char szbuff[12];
char *BADNUM = "OVERFLOW";

LRESULT CALLBACK EdNoPaste(HWND hwnd, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  if(mssg == WM_PASTE) {MessageBeep(0); return 0;}
  return CallWindowProc(procEdNum, hwnd, mssg, wParam, lParam);
}

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  switch(mssg) {
    case WM_INITDIALOG:
      SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(0, IDI_APPLICATION));
      hed = GetDlgItem(hdlg, IDED_NUM);
      SendMessage(hed, EM_SETLIMITTEXT, 11, 0);
      procEdNum = (WNDPROC) SetWindowLong(hed, GWL_WNDPROC, (long) EdNoPaste);
      return 1;
    case WM_COMMAND:
      switch(wParam) {
        case IDOK:
          GetWindowText(hed, szbuff, 12);
          SetDlgItemText(hdlg, IDST_RES, bnatoul(szbuff, &dwres) ? BADNUM: szbuff);
          return 0;
        case IDCANCEL: EndDialog(hdlg, 0);
      }
  }
  return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
  DialogBox(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, AppDlgProc);
  return 0;
}

Conclusion :


Ceci en reponse a question sur forum.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.