Обсуждение Программирование на C/C++

Насчёт вычитания, это то понятно, но вот еси юзверь решит окно перетащить куда-нить... или можт мона сделать формачку неподвижной???

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Edit1->Text = AnsiString(X);
Edit2->Text = AnsiString(Y);
}

ЗЫ с рисунками canvas юзай. хотя винапи говорят быстрее. На крайняк TImage динамически насоздавай
 

    MEGABIT

    очки: 16
    спс
Вообщем я условно хочу реализвовать 2 программы:
Серверную часть и Клиентскую Часть которые будут перекидывать между собой целочисленные значения, однако на данный момент у меня получилось реализвать передачу информации от клиента к серверу при помощи:
Код:
ClientSocket1->Socket->SendBuf(x, sizeof(x));

Аналогичными образом попытался выполнить передачу информации от сервера к клиенту при помощи
ServerSocket1->Socket->SendBuf(x, sizeof(x));
Однако при исполнении данной строки кода вылетает ексепшн.

Вопрос как реализовать передачу информации от сервера к клиенту на основе сокетов?


Хе хе, попробуй так ServerSocket1->Socket->Connections[0]->SendBuf(x, sizeof(x));
 
Товарищи, выложите пожалуйста хорошие учебники по C/C++. Тоже в шапку добавлю // Модератор
 

ShaDer

Ословед
Порекомендую эти:
Шилдт Г. - Самоучитель С++.pdf 2.48 Мб (простой, для начинающих, очень подробно всё разжёвано)
Страуструп Б. - Язык программирования С++. Special Edition.djvu 10.02 Мб (комментарии излишни, самое подробное руководство по языку)

На всякий случай руководство по нежно любимому студентами Borland C++ Builder
[C] Архангельский - программирование в C builder 6.djvu

Остальное, в общем-то, излишне. По каким-то специфическим вопросам нужно гуглить.
 

zhenechka84

Ословед
Для работы в DJGPP требуется библиотека win, особенно файл win.h Подскажите где найти.
 

Shell

Ословед
Для работы в DJGPP требуется библиотека win, особенно файл win.h Подскажите где найти.
djgpp написан для DOS
win какая-то самодельная библиотека для окошек в графике или тексте
лучше искать по именам функций из этой библиотеки
исходник где она юзается можешь выложить?
 

zhenechka84

Ословед
Написана графическая оконная библиотека

Все классы определены в all.h
Код:
#include <cstring>
#include <string>
#include <stdio.h>
#include <sys/times.h>
#include <bios.h>
#include <grx20.h>
#include <grxkeys.h>
#include <map>
#include <vector>

using namespace std;

void Delay(long int);

class Object
{
protected:
  int type;

public:
  Object();
  Object (const Object &o);
  virtual ~Object();
  virtual int is(int ot);
};

/* // property template
template <class type> class Property {
private:
  Object *owner;
  int mode;

  union {
    type *read;
    type (*get)(Object *o);
  };
  
  union {
    type *write;
    void (*set)(Object *o, type value);
  };
  
public:
  Property(Object *o, type (*g)(Object *),void (*s)(Object *,type value));
  Property(Object *o, type &r, void (*s)(Object *,type value));
  Property(Object *o, type (*g)(Object *), type &w);
  Property(Object *o, type &r, type &w);
  ~Property();

  type operator () ();
  type operator = (type value);
  type operator = (Property<type> &prop);
  template <class A>
  friend ostream & operator <<(ostream &o, Property<A> &prop);
  template <class A>
  friend istream & operator >>(istream &i, Property<A> &prop);
}; */

template <class type> class Property {
private:
  Object *owner;
  int mode;

  union {
    type *read;
    type (*get)(Object *o);
  };
  
  union {
    type *write;
    void (*set)(Object *o, type value);
  };
  
public:
  Property(Object *o, type (*g)(Object *),void (*s)(Object *,type value))
  {
    owner=o; get=g; set=s;
    mode=0;
  }
  Property(Object *o, type &r, void (*s)(Object *,type value))
  {
    owner=o; read=&r; set=s;
    mode=1;
  }
  Property(Object *o, type (*g)(Object *), type &w)
  {
    owner=o; get=g; write=&w;
    mode=2;
  }
  Property(Object *o, type &r, type &w)
  {
    owner=o; read=&r; write=&w;
    mode=3;
  }

  ~Property(){}

  type operator () ()
  { if(mode&1)
      return *read;
    else
      return get(owner);
  }

  type operator = (type value)
  {
    if(mode&2)
      *write=value;
    else
      set(owner,value);
    return value;
  }
  
  type operator = (Property<type> &prop)
  { type value;
    value=prop();
    if(mode&2)
      *write=value;
    else
      set(owner,value);
    return value;
  }
}; 

//----------------------------------------------
//----------------Base--------------------------
//----------------------------------------------
//-----------the main Base class----------------

class Base:public Object
{

  protected:

  Base * _Par;      //parent
  int _X,_Y;        //relative start coordinates
  int _H,_W;        //height and width
  bool _Vis;        //visible

  //porperty functions
  friend int BaseGetX          (Object *);
  friend int BaseGetY          (Object *);
  friend void BaseSetX         (Object *,int);
  friend void BaseSetY         (Object *,int);
  friend void BaseSetXR        (Object *,int);
  friend void BaseSetYR        (Object *,int);
  friend void BaseSetH         (Object *,int);
  friend void BaseSetW         (Object *,int);
  friend void BaseSetVis       (Object *,bool);
  friend void BaseSetPar       (Object *,Base *);

  virtual void SetDH (int dh);
  virtual void SetDW (int dw);
  virtual void SetVis (bool v);

  public:

  Property<int> X,Y;   //the same, but now it's
  Property<int> H,W;   //propertis
  Property<bool> Vis;
  Property<Base *> Par;
  Property<int> XR,YR;

  virtual int is(int ot);

  //default constructor
  Base();

  //normal constructor
  Base(Base *p,int x,int y,int w,int h);

  //copy consturctor
  Base (const Base &B);

  virtual ~Base();

  //Standart Draw function:
  void Draw();
  
  //virtual ReDraw function: draw object itself
  virtual void ReDraw()=0;

  //Get intersection between objects
  //!!!!!!!!!!!!!  REWRITE  !!!!!!!!!!
  virtual bool GetArea (Base *,int&,int&,int&,int&);
  //Is coordinate (x,y) in area of the object
  virtual bool InArea  (int,int);

};


//----------------------------------------------
//-------------------Dynamic--------------------
//----------------------------------------------
//----------The class of dynamic objects--------

class Dynamic:public Base
{
 protected:
 bool _Enabled,_Active;


 //friend void DynamicGetEnabled   (Object *,bool);
 //friend void DynamicGetActive    (Object *,bool);

 friend void DynamicSetEnabled   (Object *,bool);
 friend void DynamicSetActive    (Object *,bool);


 public:

 Property<bool> Enabled;
 Property<bool> Active;

 GrCursor *ON;  //the type of cursor, what mouse will
                //take, when will be over this object

 virtual int is(int ot);

 //default constructor
 Dynamic ();

 //normal constructor
 Dynamic (Base *p,int x,int y,int w,int h);

 //copy constructor
 Dynamic (const Dynamic &D);

 virtual ~Dynamic();


 //functions what we need to do

 virtual void GoActive();   //to go active
 virtual void GoEnabled();   //to go Enabled
 virtual void GoDisActive(); //to go disactive
 virtual void GoDisabled();  //to go Disabled

 //function process key press
 virtual void KeyPressed (GrKeyType)=0;
 
 //function process left button click
 virtual void MouseDown  (int,int)=0;

 //function process mouse over
 virtual void MouseOver (int,int);

};

//----------------------------------------------
//-------------------Label----------------------
//----------------------------------------------
//--Text what you can write on the window-------

class Label:public Base
{
  protected:

  GrTextOption _FontOpt;
  string _Text;


  friend void LabelSetFont      (Object *,GrFont *);
  friend void LabelSetTextColor (Object *,GrColor);
  friend void LabelSetTextOption(Object *,GrTextOption);
  friend void LabelSetText      (Object *,string);
  

  public:

  Property<GrColor> TextColor;
  Property<GrTextOption> FontOpt;
  Property<string> Text;
  Property<GrFont*> Font;

  int is(int ot);

  //default constructor
  Label();
  //normal constructor
  Label (Base *p,int x,int y,int w,int h,GrTextOption to,string txt);
  //copy constructor
  Label (const Label &L);

  ~Label();

  void ReDraw();
};

//----------------------------------------------
//-------------------Button---------------------
//----------------------------------------------
//----------Simple button with text-------------

class Button:public Dynamic
{
 protected:

 GrTextOption _FontOpt;
 string _Text;

 GrColor _AC; //back color
 bool _Down;  //is button pressed

 //function what will act after button pressed
 void (*Clk)(Object *sender);
 //Object with what will (*Clk) work
 Object *snd;

 friend void ButtonSetAC        (Object *, GrColor );
 friend void ButtonSetH         (Object *,int);
 friend void ButtonSetW         (Object *,int);
 friend void ButtonSetFont      (Object *,GrFont *);
 friend void ButtonSetTextColor (Object *,GrColor);
 friend void ButtonSetText      (Object *,string);

 public:
 Property<GrColor> AC;
 Property<int> H;
 Property<int> W;
 Property<GrColor> TextColor;
 Property<string> Text;
 Property<GrFont*> Font;


 int is(int ot);
 //default constructor
 Button ();
 //normal constructor
 Button (Base *p,int x,int y,int w,int h,GrColor c,GrTextOption to,string s);
 //copy constructor
 Button (const Button &B);

 ~Button();

 void ReDraw();
 void ButtonDown();
 void ButtonUp();
 void Click();
 void OnClick(void (*OC)(Object *), Object *s);

 void KeyPressed (GrKeyType);
 void MouseDown  (int,int);

};

//----------------------------------------------
//------------Edit------------------------------
//----------------------------------------------
//-------Standart edit--------------------------

class Edit:public Dynamic
{

 GrTextOption _FontOpt;
 string _Text;

 int _TW,_TH,_Pos;  //Text width, text height,
                    //cursor position

 GrColor _AC;       //Back color
 
 friend void EditSetAC        (Object *, GrColor );
 friend void EditSetH         (Object *,int);
 friend void EditSetW         (Object *,int);
 friend void EditSetFont      (Object *,GrFont *);
 friend void EditSetTextColor (Object *,GrColor);
 friend void EditSetText      (Object *,string);
 

 public:
 Property<GrColor> AC;
 Property<int> H;
 Property<int> W;
 Property<GrColor> TextColor;
 Property<string> Text;
 Property<GrFont*> Font;


 int is(int ot);

 //default constructor
 Edit ();

 //standart constructor
 Edit (Base *p,int x,int y,int w,int h,GrColor c,GrTextOption to,string s);

 //copy constructor
 Edit ( const Edit &E);

 ~Edit ();

 //const Edit& Edit::operator= (const Edit&);


 void ReDraw();
 void TextReDraw(char *);


  //printing function
 void TextChange(GrKeyType);

 void KeyPressed (GrKeyType);
 void MouseDown  (int,int);

};

//----------------------------------------------
//------------StaCont---------------------------
//----------------------------------------------
//----------------------------------------------

class StaCont:public Base
{

  //linking name and object
  typedef map <string,Base*,less <string> > MapCont;
  MapCont MaCon;
  
  //functions change draw area
  void SetDH (int dh);
  void SetDW (int dw);
  void SetVis (bool v);

  public:

  int is(int ot);

  //default constructor
  StaCont ();

  //standart constructor
  StaCont (Base *p,int x,int y,int w,int h);

  //copy constructor
  StaCont (const StaCont &S);

  ~StaCont();

  //const StaCont& operator= (const StaCont &S);

  void Add (string,Base *);

  Label * GetLabel (string s);
  
  void ReDraw ();
  
  void Remove  (string);

};

//----------------------------------------------
//-----------DynCont----------------------------
//----------------------------------------------
//----------------------------------------------

class DynCont:public Dynamic
{
  //--------------
  typedef struct _ObjN
  {
   Dynamic * Obj;
   int _N;
  } ObjN;

  typedef struct _ObjStr
  {
   Dynamic * Obj;
   string Nam;
  } ObjStr;
  //--------------
  
  int  _Ct; //counter
  //linking name and object
  typedef map <string,ObjN,less <string> > MapCont;
  //linking number and object
  typedef vector <ObjStr> VecCont;

  MapCont MaCon;  //containers
  VecCont VeCon;

  //cursors for this container:
        //when over the Edit (text cursor) and standart cursor
  GrCursor *_TXT,*_NORM;//,*_BUTT;


  void SetDH (int dh);
  void SetDW (int dw);
  void SetVis (bool v);

  //functions setting up cursors to this container
  friend void DynContSetTXT  (Object *o,GrCursor *c);
  friend void DynContSetNORM (Object *o,GrCursor *c);
  //friend void DynContSetBUTT (Object *o,GrCursor *c);

  public:

  Property <GrCursor *> TXT;
  Property <GrCursor *> NORM;
  //Property <GrCursor *> BUTT;


  int is(int ot);

  DynCont ();

  DynCont (Dynamic *p,int x,int y,int w,int h);

  DynCont (const DynCont &D);

  ~DynCont();

  //add new object to the container
  void Add (string,Dynamic *);

  //get a button from the container
  Button * GetButton (string s);

  //get an Edit from the conteiner
  Edit * GetEdit (string s);

  //set an active object of the container
  void SetActive (string);

  //set next active element from the container
  void NextActive ();

  //get active element from the container
  Dynamic * GetActive ();
  
  //redraw all conteiner
  void ReDraw ();

  //remove an element from the conteiner
  void Remove  (string);

  void KeyPressed (GrKeyType);
  void MouseDown (int,int);
  void MouseOver (int,int);
};

//----------------------------------------------
//----------------Window------------------------
//----------------------------------------------
//----------------------------------------------

class Window:public Dynamic
{

 protected:
 
 //int _Ix;
 int _HH; //header height
 GrTextOption _FontOpt;
 string _Head;  //header text
 StaCont *_WStaCont; //conrainer of static elements (eg. Label...)
 DynCont *_WDynCont; //container of dynamic elements (eg. Button...)

 //clolor structute
 struct co
 {
  GrColor BK,DAH,AH,BOR;
 } Color;

 //friend void WindowSetIndex     (Object *,int);
 friend void WindowSetHeadH     (Object *,int);
 friend void WindowSetBK        (Object *,GrColor);
 friend void WindowSetAH        (Object *,GrColor);
 friend void WindowSetDAH       (Object *,GrColor);
 friend void WindowSetBOR       (Object *,GrColor);
 friend void WindowSetFont      (Object *,GrFont *);
 friend void WindowSetTextColor (Object *,GrColor);
 friend void WindowSetTextOption(Object *,GrTextOption);
 friend void WindowSetHead      (Object *,string);

 friend void WindowSetTXT       (Object *,GrCursor *);
 friend void WindowSetNORM      (Object *,GrCursor *);

 //if we change window height or
 //width, we need to change draw area
 //of static and dynamic containres
 void SetDH (int dh);
 void SetDW (int dw);
 //if we change visibility of the window,
 //we need to change visibility of window containers
 void SetVis (bool v);

 GrCursor *_TXT,*_NORM;//*_BUTT;

 public:

 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 GrCursor *RD_LT,*RT_LD,*T_D,*R_L;

 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 int is(int ot);
 
 //Property<int> Index;
 Property<int> HH;
 Property<GrColor> TextColor;
 Property<GrTextOption> FontOpt;
 Property<GrFont*> Font;
 Property<string> Head;
 Property<DynCont*> GetDyn;
 Property<StaCont*> GetSta;
 Property<GrColor> BKColor,DAHColor,AHColor,BorColor;

 Property<GrCursor*> TXT,NORM;//BUTT;

 //default constructor
 Window ();

 //standart constructor
 Window (Base *p,int x,int y,int w,int h,int hh,GrTextOption to,string t,GrColor bk,GrColor bor,GrColor ah,GrColor dah);

 // "without header" constructor
 Window (Base *p,int x,int y,int w,int h,GrColor bk);
 
 //copy constructor
 Window (const Window &W);

 ~Window ();

 void ReDraw();
 void Hide();

 //add object to the window (Label,Button,etc...)
 void Add(string,Base *);

 //set KewMove mode
 void SetKeyMove();

 //set MouseMove mode
 void SetMouseMove(int,int);

 //set MouseResize mode
 void SetMouseReSize (int,int);

 void KeyPressed (GrKeyType);

 void MouseDown  (int,int);
 void MouseOver  (int,int);

};

//----------------------------------------------
//---------------WinCont------------------------
//----------------------------------------------
//----------------------------------------------

class WinCont:public Base
{
  typedef struct _WiConN_
  {
   Window *Wind;
   int _N;
  } WiConN;
  typedef struct _WiConStr_
  {
   Window *Wind;
   string Nam;
  } WiConStr;

  int  _Ct;
  
  typedef map <string,WiConN,less <string> > MapCont; //connecting name and object
  typedef vector <WiConStr> VecCont;

  MapCont MaCon;
  VecCont VeCon;

  //Standard window options
  struct co
  {
   GrColor BK,DAH,AH,BOR;
  } Color;

  GrTextOption _FontOpt;

  int _HH;

  //GrCursor *NORM,*RD_LT,*RT_LD,*T_D,*R_L,*TXT;


  public:

  GrCursor *NORM,*RD_LT,*RT_LD,*T_D,*R_L,*TXT;


  int is(int ot);

  WinCont();
  WinCont(GrColor);
  WinCont(GrColor,int,GrColor,GrColor,GrColor,GrColor,GrTextOption);

  ~WinCont();

  void SetCursors (void);

  void NewWin (string,int,int,int,int,int,GrTextOption,string,GrColor,GrColor,GrColor,GrColor);
  void NewWin (string,int,int,int,int,string);
  void NewWin (string,Window *);

  Window * GetWin (string);
  Window * GetActive ();
  void SetActive (string);
  void NextActive ();
  
  void ReDraw ();
  void Remove  (string);

  void SetMove ();

  void KeyPressed (GrKeyType);
  void MouseDown  (int,int);
  void MouseOver  (int,int);
};

Для каждого класса свой *.cpp. Например Base.cpp
Код:
#include "win.h"

//----------------------------------------------
//----------------Base--------------------------
//----------------------------------------------
//-----------the main Base class----------------

void Base::SetDH (int dh)
        {
         _H=_H+dh;
         if ( _Vis )
         Draw();
        }

void Base::SetDW (int dw)
        {
         _W=_W+dw;
         if ( _Vis )
         Draw();
        }

void Base::SetVis (bool v)
        {
         _Vis=v;
         Draw();
        }

int Base::is(int ot)
        {
         return ot==tBase || Object::is(ot);
        }


//default constructor
Base::Base():
       Object (),
       X      (this,BaseGetX,BaseSetX),
       Y      (this,BaseGetY,BaseSetY),
       XR     (this,_X,BaseSetXR),
       YR     (this,_Y,BaseSetYR),
       H      (this,_H,BaseSetH),
       W      (this,_W,BaseSetW),
       Vis    (this,_Vis,BaseSetVis),
       Par    (this,_Par,BaseSetPar),
_Par(NULL),_X(0),_Y(0),_W(0),_H(0),_Vis(0)
   {
    type=tBase;
   }


//normal constructor
Base::Base(Base *p,int x,int y,int w,int h):
       Object (),
       X      (this,BaseGetX,BaseSetX),
       Y      (this,BaseGetY,BaseSetY),
       XR     (this,_X,BaseSetXR),
       YR     (this,_Y,BaseSetYR),
       H      (this,_H,BaseSetH),
       W      (this,_W,BaseSetW),
       Vis    (this,_Vis,BaseSetVis),
       Par    (this,_Par,BaseSetPar),
_Par(p),_X(x),_Y(y),_W(w),_H(h),_Vis(0)
   {
    type=tBase;
   }


//copy consturctor
Base::Base (const Base &B):
       Object (B),
       X      (this,BaseGetX,BaseSetX),
       Y      (this,BaseGetY,BaseSetY),
       XR     (this,_X,BaseSetXR),
       YR     (this,_Y,BaseSetYR),
       H      (this,_H,BaseSetH),
       W      (this,_W,BaseSetW),
       Vis    (this,_Vis,BaseSetVis),
       Par    (this,_Par,BaseSetPar),
_Par(B._Par),_X(B._X),_Y(B._Y),_W(B._W),_H(B._H),_Vis(B._Vis)
   {
    type=B.type;
   }

Base::~Base()
  {

  }


//Standart Draw function:
void Base::Draw()
  {
   if ( _Par )        //if object have the parent
      _Par->ReDraw(); //draw parent itself
  }

//-----------FUNCTIONS-------------------
//---------------------------------------

int BaseGetX (Object *o)  //get global X coordinate
{
 int x=0;
 if ( dynamic_cast<Base*>(o)->_Par )
    {
      x+=dynamic_cast<Base*>(o)->_Par->X();
    }
 x+=dynamic_cast<Base*>(o)->_X;
 return x;
}

int BaseGetY (Object *o)  //get global Y coordinate
{
 int y=0;
 if ( dynamic_cast<Base*>(o)->_Par )
    {
      y+=dynamic_cast<Base*>(o)->_Par->Y();
    }
 y+=dynamic_cast<Base*>(o)->_Y;
 return y;
}

void BaseSetX (Object *o,int x)  //set global X coordinate
{
   dynamic_cast<Base*>(o)->_X+=x-dynamic_cast<Base*>(o)->X();

   if ( dynamic_cast<Base*>(o)->_Vis )
      dynamic_cast<Base*>(o)->Draw();
}

void BaseSetY (Object *o,int y)   //set globlal Y coordinate
{
   dynamic_cast<Base*>(o)->_Y+=y-dynamic_cast<Base*>(o)->Y();

   if ( dynamic_cast<Base*>(o)->_Vis )
      dynamic_cast<Base*>(o)->Draw();
}
void BaseSetXR (Object *o,int x)  //set relative X coordinate
{
   dynamic_cast<Base*>(o)->_X=x;

   if ( dynamic_cast<Base*>(o)->_Vis )
      dynamic_cast<Base*>(o)->Draw();
}

void BaseSetYR (Object *o,int y)  //set relative Y coordinate
{
   dynamic_cast<Base*>(o)->_Y=y;

   if ( dynamic_cast<Base*>(o)->_Vis )
      dynamic_cast<Base*>(o)->Draw();
}

void BaseSetH (Object *o,int h)  //set object height
{
 if (h>=0)
 {
   dynamic_cast<Base*>(o)->SetDH(h-dynamic_cast<Base*>(o)->_H);
 }
 else throw CExc ("Error. Height less than 0");
}

void BaseSetW (Object *o,int w)  //set object width
{
 if (w>=0)
 {
   dynamic_cast<Base*>(o)->SetDW(w-dynamic_cast<Base*>(o)->_W);
 }
 else throw CExc ("Error. With less than 0");
}

void BaseSetVis (Object *o,bool v)
{
 if ( v==dynamic_cast<Base*>(o)->_Vis ) return;
 dynamic_cast<Base*>(o)->SetVis(v);
}

void BaseSetPar (Object *o,Base *p) //set object parent
{
 Base *Ob=dynamic_cast<Base*>(o);
 if (Ob->_Par==p) return;
 else
 {
  if ( Ob->Vis() )
  {
   Ob->Vis=0;
   Ob->_Par=p;
   Ob->Vis=1;
  }
  else
  Ob->_Par=p;
 }
}

bool Base::GetArea(Base *p,int &_x1,int &_y1,int &_x2,int &_y2)
{
 _x1=0;
 _y1=0;
 _x2=0;
 _y2=0;
 int xo1=X();
 int yo1=Y();
 int xo2=X()+_W;
 int yo2=Y()+_H;
 int xp1=p->X();
 int yp1=p->Y();
 int xp2=p->X()+p->_W;
 int yp2=p->Y()+p->_H;
 if (xo1>=xp2 || yo1>=yp2 || xo2<=xp1 || yo2<=yp1) return 0;
 _x1=max(xo1,xp1);
 _x2=min(xo2,xp2);
 _y1=max(yo1,yp1);
 _y2=min(yo2,yp2);
 return 1;
}

bool Base::InArea(int x,int y)
{
 if (!_Vis) return 0;
 if (x>=X() && x<=X()+_W && y>=Y() && y<=Y()+_H)
    return 1;
 else return 0;
}
 

zhenechka84

Ословед
Я пробовала, при компиляции выдает кучу ошибок - ругается на все параметры функций, что они не определены.
 

zhenechka84

Ословед
Выдает при компиляции
Код:
Compiling: base.cpp
In member function 'virtual int Base::is(int)':
base.cpp(30) Error: error: 'tBase' was not declared in this scope
In constructor 'Base::Base()':
base.cpp(37) Error: error: 'BaseGetX' was not declared in this scope

и т.д. для каждого параметра
 

Shell

Ословед
Выдает при компиляции

и т.д. для каждого параметра
tBase какая-то константа
нужно добавить enum {tBase, ... }; в all.h (win.h?)

вторая ошибка должна излечиться если всё после коммента //-----------FUNCTIONS-------------------
поставить в Base.cpp сразу после #include
 
K

Kaa

Вопрос такой хочу в окне создать вспомогательную панель с боку, каким образом лучше сделать? Через обычное создание окна, через диалоговое, через меню или иным способом.
Пытался через дочернее окно, все вроде нормально кроме того что кнопки не работают. Примерно вот такой код:
Код:
hInfoPanel = CreateWindow(L"static", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, rc.right-IwSizeX-rc.left, 0, IwSizeX, IwSizeY, hWnd, NULL, hInst, NULL);
...
hButton1 = CreateWindow(L"button", L"ОК", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 154, 100, 58, 20, hInfoPanel, (HMENU)ID_BUTTON, NULL, NULL);
Кнопки работают только если привязаны к основному окну hWnd.
 

gureedo

Самец :)
Вопрос такой хочу в окне создать вспомогательную панель с боку, каким образом лучше сделать? Через обычное создание окна, через диалоговое, через меню или иным способом.
Пытался через дочернее окно, все вроде нормально кроме того что кнопки не работают. Примерно вот такой код:
Код:
hInfoPanel = CreateWindow(L"static", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, rc.right-IwSizeX-rc.left, 0, IwSizeX, IwSizeY, hWnd, NULL, hInst, NULL);
...
hButton1 = CreateWindow(L"button", L"ОК", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 154, 100, 58, 20, hInfoPanel, (HMENU)ID_BUTTON, NULL, NULL);
Кнопки работают только если привязаны к основному окну hWnd.

а что значит "работают"?
 

CrazyBolt

Ословед
очередь сообщений для приложения одна. куда бы он не привязал, сообщение придет wndproc.
если писать на обычном WinAPI, то сообщение при нажатии приходит родительскому окну:
When the user clicks a button, its state changes, and the button sends notification messages to its parent window (MSDN).
Так что сообщения от кнопки hButton1 нужно обрабатывать в оконной процедуре окна hInfoPanel.
 

DarkByte

Ословед
В си только начал разбираться... и понадобилось написать программу типа прокси для устройства.
Вобщем есть готовая программа, которую изменить нет возможности, она должна получать и обрабатывать сигнал от устройства подключенного через com порт.
И есть устройство, которое подключается к компу через usb. Требуется написать программу, которая каким нибудь образом будет объединять программу и устройство.
Подскажите, пожалуйста, в какую сторону начать копать? :)
 
K

Kaa

а что значит "работают"?
Значит что при подключении ее к основному окно WM_COMMAND видет поступление команды от нее, и выполняет, но как тока привязываешь к дочернему окну, то кнопка перестает выполняет свои функции.
 
Сверху