c++ - Update flags for a window -
good morning everyone! trying set , (later) delete flag window in c++. no matter try do, continue compile errors , can't figure out. below relevant bits of the object:
enum {     no_focus        = 0x0001,     click_to_focus      = 0x0002,     no_border       = 0x0004,  ... }  class frame : public fl_window {     int flags_;     void set_flag(int i) {flags_ |= i;}     void clear_flag(int i) {flags_&=~i;}     int flags() const {return flags_;}     int flag(int i) const {return flags_&i;}  ... }   i trying adjust flags value function:
void showwindow() {  display* d = fl_display;  xwindow w = xcreatesimplewindow(d, rootwindow(d, fl_screen),         0, 0,   100, 200,         0,         0x000000,         0x000000);      frame* frame = new frame(w);  //frame.flags |= no_border;  //frame->flags() |= no_border;  frame->flags(no_border); }   i have tried other ways commented out parts above, no matter try, continue compile errors. appreciated!
thanks, dave
update:
per information provided, have made set_flag() function public, not getting desired results. function in project checks value of flags before drawing window:
void frame::updateborder() {  ...      if (flag(no_border)) { ... }  else { ... } }   but doesn't appear when set flag externally, getting triggered. , after adding debug printf statements, can see window being draw before flag can set. how can resolve that? have like:
frame*->set_flag(no_border); frame* frame = new frame(w);   or
frame* frame; frame->set_flag(no_border); frame = new frame(w);   i can program compile latter, desired effects still not happening. how can set flag before window drawn?
you need public: before part(s) of class want accessible outside class.
notice ought not make flags_ public, ought not make form usable:
frame.flags_ |= no_border;   and flags without underscore function, following tried badly wrong:
frame.flags |= no_border;   you defined flags() read only, when make flags public, can't do:
frame->flags() |= no_border;   once make correct part of class public, should use defined:
frame->set_flag( no_border );      
Comments
Post a Comment