void App::wm_create(HWND *window){ hwnd = *window; //kontrolki hctrl[0]=CreateWindowEx(WS_EX_CLIENTEDGE,WC_EDIT,"",WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,0,20,window_w,20,hwnd,0,*hInst,0); //wiersz poleceñ hctrl[1]=CreateWindowEx(0,WC_STATIC,"",WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE,0,0,window_w,20,hwnd,0,*hInst,0); //konsola hctrl[2]=CreateWindowEx(0,WC_BUTTON,"Przechwytywanie klawiszy [F11]",WS_CHILD|WS_VISIBLE|BS_CHECKBOX,25,40,180,20,hwnd,(HMENU)1,*hInst,0); //groupbox1 hctrl[3]=CreateWindowEx(0,WC_BUTTON,"Akordy",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,10,60,window_w-20,150,hwnd,(HMENU)0,*hInst,0); for(int i=0; i<12; i++){ hctrl[4+i]=CreateWindowEx(0,WC_BUTTON,"",WS_CHILD|WS_VISIBLE,20+(i%3)*60,80+(i/3)*30,60,30,hwnd,(HMENU)(2+i),*hInst,0); } //groupbox2 hctrl[16]=CreateWindowEx(0,WC_BUTTON,"Rodzaj akordu",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,10,215,window_w-20,140,hwnd,(HMENU)0,*hInst,0); hctrl[17]=CreateWindowEx(0,WC_BUTTON,"Pojedynczy dŸwiêk",WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,30,230,160,20,hwnd,(HMENU)14,*hInst,0); hctrl[18]=CreateWindowEx(0,WC_BUTTON,"Power chord",WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,30,250,160,20,hwnd,(HMENU)15,*hInst,0); hctrl[19]=CreateWindowEx(0,WC_BUTTON,"Akord molowy",WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,30,270,160,20,hwnd,(HMENU)16,*hInst,0); hctrl[20]=CreateWindowEx(0,WC_BUTTON,"Akord durowy",WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,30,290,160,20,hwnd,(HMENU)17,*hInst,0); hctrl[21]=CreateWindowEx(0,WC_BUTTON,"Akord molowy septymowy",WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,30,310,160,20,hwnd,(HMENU)18,*hInst,0); hctrl[22]=CreateWindowEx(0,WC_BUTTON,"Akord durowy septymowy",WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,30,330,160,20,hwnd,(HMENU)19,*hInst,0); //kapodaster hctrl[23]=CreateWindowEx(0,WC_STATIC,"Kapodaster",WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE,55,360,110,25,hwnd,0,*hInst,0); hctrl[24]=CreateWindowEx(0,WC_BUTTON,"-1",WS_CHILD|WS_VISIBLE,30,360,25,25,hwnd,(HMENU)20,*hInst,0); hctrl[25]=CreateWindowEx(0,WC_BUTTON,"+1",WS_CHILD|WS_VISIBLE,165,360,25,25,hwnd,(HMENU)21,*hInst,0); hctrl[26]=CreateWindowEx(0,WC_BUTTON,"-12",WS_CHILD|WS_VISIBLE,5,360,25,25,hwnd,(HMENU)22,*hInst,0); hctrl[27]=CreateWindowEx(0,WC_BUTTON,"+12",WS_CHILD|WS_VISIBLE,190,360,25,25,hwnd,(HMENU)23,*hInst,0); //g³oœnoœæ hctrl[28]=CreateWindowEx(0,WC_STATIC,"G³oœnoœæ",WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE,60,390,100,25,hwnd,0,*hInst,0); hctrl[29]=CreateWindowEx(0,WC_BUTTON,"-",WS_CHILD|WS_VISIBLE,30,390,25,25,hwnd,(HMENU)24,*hInst,0); hctrl[30]=CreateWindowEx(0,WC_BUTTON,"+",WS_CHILD|WS_VISIBLE,165,390,25,25,hwnd,(HMENU)25,*hInst,0); //haki hExe = GetModuleHandle(NULL); hHookkb = SetWindowsHookEx(WH_KEYBOARD_LL, hpkb, hExe, 0); //ustawienia load_config(); //ustawienia pocz¹tkowe checkbox1_click(1); radiobutton1_click(2); kapodaster=0; capo_add(0); volume=100; volume_add(0); //czcionki fontsize=13; fontface="MS Shell Dlg 2"; for(int i=0; i<ctrls_num; i++){ change_font(hctrl[i]); } SetFocus(hctrl[0]); //subclassing subclass(0); //midi init midi_device=midi_init(); echo("wersja "+version); }
/* * XTerm escape sequences: ESC ] Ps;Pt BEL * 0 = change iconName/title * 1 = change iconName * 2 = change title * 46 = change logfile (not implemented) * 50 = change font * * rxvt extensions: * 10 = menu * 20 = bg pixmap * 39 = change default fg color * 49 = change default bg color */ void xterm_seq (int op, char *str) { int changed = 0; assert (str != NULL); switch (op) { case XTerm_name: set_title (str); /* drop */ case XTerm_iconName: set_iconName (str); break; case XTerm_title: set_title (str); break; case XTerm_Menu: menubar_dispatch (str); break; case XTerm_Pixmap: #ifdef XPM_BACKGROUND if (*str != ';') set_bgPixmap (str); while ((str = strchr (str, ';')) != NULL) { str++; changed += scale_pixmap (str); } if (changed) { resize_pixmap (); scr_touch (); } #endif /* XPM_BACKGROUND */ break; case XTerm_restoreFG: set_window_color (fgColor, str); break; case XTerm_restoreBG: set_window_color (bgColor, str); break; case XTerm_logfile: break; case XTerm_font: change_font (0, str); break; } }
/*{{{ Create_Windows() - Open and map the window */ static void Create_Windows (int argc, char *argv[]) { Cursor cursor; XClassHint classHint; XWMHints wmHint; int i, x, y, flags; unsigned int width, height; /* * grab colors before netscape does */ for (i = 0; i < (Xdepth <= 2 ? 2 : NRS_COLORS); i++) { const char *const msg = "can't load color \"%s\""; XColor xcol; if (!rs_color[i]) continue; if (!XParseColor (Xdisplay, Xcmap, rs_color[i], &xcol) || !XAllocColor (Xdisplay, Xcmap, &xcol)) { print_error (msg, rs_color[i]); rs_color[i] = def_colorName[i]; if (!rs_color[i]) continue; if (!XParseColor (Xdisplay, Xcmap, rs_color[i], &xcol) || !XAllocColor (Xdisplay, Xcmap, &xcol)) { print_error (msg, rs_color[i]); switch (i) { case fgColor: case bgColor: /* fatal: need bg/fg color */ print_error ("aborting"); exit (EXIT_FAILURE); break; #ifndef NO_CURSORCOLOR case cursorColor: xcol.pixel = PixColors[bgColor]; break; case cursorColor2: xcol.pixel = PixColors[fgColor]; break; #endif /* NO_CURSORCOLOR */ default: xcol.pixel = PixColors[bgColor]; /* None */ break; } } } PixColors[i] = xcol.pixel; } #ifndef NO_CURSORCOLOR if (Xdepth <= 2 || !rs_color[cursorColor]) PixColors[cursorColor] = PixColors[bgColor]; if (Xdepth <= 2 || !rs_color[cursorColor2]) PixColors[cursorColor2] = PixColors[fgColor]; #endif /* NO_CURSORCOLOR */ #ifndef NO_BOLDUNDERLINE if (Xdepth <= 2 || !rs_color[colorBD]) PixColors[colorBD] = PixColors[fgColor]; if (Xdepth <= 2 || !rs_color[colorUL]) PixColors[colorUL] = PixColors[fgColor]; #endif /* NO_BOLDUNDERLINE */ /* * get scrollBar/menuBar shadow colors * * The calculations of topShadow/bottomShadow values are adapted * from the fvwm window manager. */ #ifndef XTERM_SCROLLBAR if (Xdepth <= 2) /* Monochrome */ { PixColors[scrollColor] = PixColors[bgColor]; PixColors[topShadowColor] = PixColors[fgColor]; PixColors[bottomShadowColor] = PixColors[fgColor]; } else { XColor xcol, white; /* bottomShadowColor */ xcol.pixel = PixColors[scrollColor]; XQueryColor (Xdisplay, Xcmap, &xcol); xcol.red = ((xcol.red) / 2); xcol.green = ((xcol.green) / 2); xcol.blue = ((xcol.blue) / 2); if (!XAllocColor (Xdisplay, Xcmap, &xcol)) { print_error ("can't allocate %s", "bottomShadowColor"); xcol.pixel = PixColors[minColor]; } PixColors[bottomShadowColor] = xcol.pixel; /* topShadowColor */ white.pixel = WhitePixel (Xdisplay, Xscreen); XQueryColor (Xdisplay, Xcmap, &white); xcol.pixel = PixColors[scrollColor]; XQueryColor (Xdisplay, Xcmap, &xcol); #ifndef min #define min(a,b) (((a)<(b)) ? (a) : (b)) #define max(a,b) (((a)>(b)) ? (a) : (b)) #endif xcol.red = max ((white.red / 5), xcol.red); xcol.green = max ((white.green / 5), xcol.green); xcol.blue = max ((white.blue / 5), xcol.blue); xcol.red = min (white.red, (xcol.red * 7) / 5); xcol.green = min (white.green, (xcol.green * 7) / 5); xcol.blue = min (white.blue, (xcol.blue * 7) / 5); if (!XAllocColor (Xdisplay, Xcmap, &xcol)) { print_error ("can't allocate %s", "topShadowColor"); xcol.pixel = PixColors[whiteColor]; } PixColors[topShadowColor] = xcol.pixel; } #endif /* XTERM_SCROLLBAR */ szHint.base_width = (2 * TermWin_internalBorder + (Options & Opt_scrollBar ? SB_WIDTH : 0)); szHint.base_height = (2 * TermWin_internalBorder); flags = (rs_geometry ? XParseGeometry (rs_geometry, &x, &y, &width, &height) : 0); if (flags & WidthValue) { szHint.width = width; szHint.flags |= USSize; } if (flags & HeightValue) { szHint.height = height; szHint.flags |= USSize; } TermWin.ncol = szHint.width; TermWin.nrow = szHint.height; change_font (1, NULL); if (flags & XValue) { if (flags & XNegative) { x += (DisplayWidth (Xdisplay, Xscreen) - (szHint.width + TermWin_internalBorder)); szHint.win_gravity = NorthEastGravity; } szHint.x = x; szHint.flags |= USPosition; } if (flags & YValue) { if (flags & YNegative) { y += (DisplayHeight (Xdisplay, Xscreen) - (szHint.height + TermWin_internalBorder)); szHint.win_gravity = (szHint.win_gravity == NorthEastGravity ? SouthEastGravity : SouthWestGravity); } szHint.y = y; szHint.flags |= USPosition; } /* parent window - reverse video so we can see placement errors * sub-window placement & size in resize_subwindows() */ TermWin.parent = XCreateSimpleWindow (Xdisplay, Xroot, szHint.x, szHint.y, szHint.width, szHint.height, BORDERWIDTH, PixColors[bgColor], PixColors[fgColor]); xterm_seq (XTerm_title, rs_title); xterm_seq (XTerm_iconName, rs_iconName); /* ignore warning about discarded `const' */ classHint.res_name = rs_name; classHint.res_class = APL_CLASS; wmHint.input = True; wmHint.initial_state = (Options & Opt_iconic ? IconicState : NormalState); wmHint.flags = (InputHint | StateHint); XSetWMProperties (Xdisplay, TermWin.parent, NULL, NULL, argv, argc, &szHint, &wmHint, &classHint); XSelectInput (Xdisplay, TermWin.parent, (KeyPressMask | FocusChangeMask | StructureNotifyMask | VisibilityChangeMask) ); /* vt cursor: Black-on-White is standard, but this is more popular */ TermWin_cursor = XCreateFontCursor (Xdisplay, XC_xterm); { XColor fg, bg; fg.pixel = PixColors[fgColor]; XQueryColor (Xdisplay, Xcmap, &fg); bg.pixel = PixColors[bgColor]; XQueryColor (Xdisplay, Xcmap, &bg); XRecolorCursor (Xdisplay, TermWin_cursor, &fg, &bg); } /* cursor (menuBar/scrollBar): Black-on-White */ cursor = XCreateFontCursor (Xdisplay, XC_left_ptr); /* the vt window */ TermWin.vt = XCreateSimpleWindow (Xdisplay, TermWin.parent, 0, 0, szHint.width, szHint.height, 0, PixColors[fgColor], PixColors[bgColor]); XDefineCursor (Xdisplay, TermWin.vt, TermWin_cursor); XSelectInput (Xdisplay, TermWin.vt, (ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button3MotionMask)); XMapWindow (Xdisplay, TermWin.vt); XMapWindow (Xdisplay, TermWin.parent); /* scrollBar: size doesn't matter */ scrollBar.win = XCreateSimpleWindow (Xdisplay, TermWin.parent, 0, 0, 1, 1, 0, PixColors[fgColor], PixColors[bgColor]); XDefineCursor (Xdisplay, scrollBar.win, cursor); XSelectInput (Xdisplay, scrollBar.win, (ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask | Button3MotionMask) ); #ifndef NO_MENUBAR /* menuBar: size doesn't matter */ menuBar.win = XCreateSimpleWindow (Xdisplay, TermWin.parent, 0, 0, 1, 1, 0, PixColors[fgColor], PixColors[scrollColor]); XDefineCursor (Xdisplay, menuBar.win, cursor); XSelectInput (Xdisplay, menuBar.win, (ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask) ); #endif /* NO_MENUBAR */ #ifdef XPM_BACKGROUND if (rs_backgroundPixmap != NULL) { char *p = rs_backgroundPixmap; if ((p = strchr (p, ';')) != NULL) { p++; scale_pixmap (p); } set_bgPixmap (rs_backgroundPixmap); } #endif /* XPM_BACKGROUND */ /* graphics context for the vt window */ { XGCValues gcvalue; gcvalue.font = TermWin.font->fid; gcvalue.foreground = PixColors[fgColor]; gcvalue.background = PixColors[bgColor]; TermWin.gc = XCreateGC (Xdisplay, TermWin.vt, GCForeground | GCBackground | GCFont, &gcvalue); } }