// masterX options.cpp #include "moptions.h" #define WM_XCLEAR WM_USER + 420 HWND tabs; HWND stat; int pre = 420; HWND win1[10]; HWND win2[10]; HWND win3[10]; HWND win4[10]; _TREEITEM* mxuser; TV_INSERTSTRUCT tv; HWND addwin[10]; HWND macwin[10]; mxOptions mx_op; int curoff = 0; int psel = 0;//previous sel // Due to the Poorly documentated stuff from MicroShit // i had to tweak there Tabs to make it work for me without all the api // TCN Messages are Fucked ? why // So i had to figure out a method to skan fer it myself. // and switch windows // HAHAH like i document any better :) // Options Window Process void clearctrl(); void drawctrl(int); int checkswitch(int x); bool convertint(int x); int bswitch(bool); void addletters(); void loadkeytree(); // default settings void mxOptions::setdefault() { auto_show = true; global_key = true; aol_allowconnect = true; aim_allowconnect = true; auto_idle = true; macroon = true; // system options cmdcase = true; allowvb = true; } // load options void loadoptions() { ifstream fin("mxoption.lsd",ios::binary); fin.read((char*)&mx_op,sizeof(mx_op)); fin.close(); if(mx_op.icheck == false) { mx_op.setdefault(); mx_op.icheck = true; saveoptions(); } } // write to file (binary) void saveoptions() { ofstream fout("mxoption.lsd",ios::binary); fout.write((char*)&mx_op,sizeof(mx_op)); fout.close(); } // load into Checks void mx_ophwndload() { SendMessage(win1[1],BM_SETCHECK,bswitch(mx_op.auto_show),0); SendMessage(win1[2],BM_SETCHECK,bswitch(mx_op.global_key),0); SendMessage(win1[3],BM_SETCHECK,bswitch(mx_op.aol_allowconnect),0); SendMessage(win1[4],BM_SETCHECK,bswitch(mx_op.aim_allowconnect),0); SendMessage(win1[5],BM_SETCHECK,bswitch(mx_op.auto_idle),0); SendMessage(win1[6],BM_SETCHECK,bswitch(mx_op.macroon),0); // system SendMessage(win2[1],BM_SETCHECK,bswitch(mx_op.cmdcase),0); SendMessage(win2[2],BM_SETCHECK,bswitch(mx_op.allowvb),0); for(int i = 0; i < 25; i++) { if(mx_op.macro.mac_win[i].on) { char abuff[100]; strcpy(abuff,mx_op.macro.mac_win[i].tl); strcat(abuff, " : "); strcat(abuff,mx_op.macro.mac_win[i].cl); SendMessage(win1[7],LB_ADDSTRING,255,(LPARAM)(LPCSTR)abuff); } } } LRESULT APIENTRY OpProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_CLOSE: ShowWindow(hwnd,SW_HIDE); saveoptions(); break; case WM_CREATE: tabs = CreateWindow("SysTabControl32","Options", WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE,0,0,295,275,hwnd,0,getinstance(),0); SendMessage(tabs,WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); TC_ITEM item; item.mask = TCIF_TEXT; item.pszText = "XAOL"; item.cchTextMax = strlen(item.pszText); TabCtrl_InsertItem(tabs,1,&item); item.pszText = "System"; item.cchTextMax = strlen(item.pszText); TabCtrl_InsertItem(tabs,2,&item); item.pszText = "Skins"; item.cchTextMax = strlen(item.pszText); TabCtrl_InsertItem(tabs,3,&item); item.pszText = "Quick Keys"; // basicly, setup a keypress // to call a masterX console command/ run masterX command batch file // ability to bring up the menu thru a keypress // like be able to open the menu (thats in systray) item.cchTextMax = strlen(item.pszText); TabCtrl_InsertItem(tabs,4,&item); // create controls win1[0] = CreateWindow("Static"," America Online Manipulation Options ", WS_CHILD | WS_VISIBLE,20,40,250,25,tabs,0,getinstance(),0); win2[0] = CreateWindow("Static"," MasterX System Options ", WS_CHILD | WS_VISIBLE,20,40,250,25,tabs,0,getinstance(),0); win3[0] = CreateWindow("Static"," MasterX Skin Options ", WS_CHILD | WS_VISIBLE,20,40,250,25,tabs,0,getinstance(),0); win4[0] = CreateWindow("Static"," MasterX Keypress Commands ", WS_CHILD | WS_VISIBLE,20,40,250,25,tabs,0,getinstance(),0); // Tab 1 Layout win1[1] = CreateWindow("Button", "Auto Show on Sign on",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,70,200,20,hwnd,(HMENU)AUTOSHOW,getinstance(),0); win1[2] = CreateWindow("Button", "Enable Global Quick-Keys",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,90,200,20,hwnd,(HMENU)GLOBALKEY,getinstance(),0); win1[3] = CreateWindow("Button", "Allow Connections via AOL", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,110,200,20,hwnd,(HMENU)AOL_ALLOW,getinstance(),0); win1[4] = CreateWindow("Button", "Allow Connections via AIM", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,130,200,20,hwnd,(HMENU)AIM_ALLOW,getinstance(),0); win1[5] = CreateWindow("Button", "Auto Anti-Idle", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,150,200,20,hwnd,(HMENU)AUTO_IDLE,getinstance(),0); win1[6] = CreateWindow("Button", "Enable XAOL Child Macros",WS_VISIBLE | WS_CHILD | BS_CHECKBOX,20,170,200,20,hwnd,(HMENU)MACROON,getinstance(),0); win1[7] = CreateWindowEx(WS_EX_STATICEDGE,"ListBox", NULL,LBS_NOTIFY | WS_CHILD | LBS_STANDARD | WS_VISIBLE,20,190,200,70,hwnd,(HMENU)MACROLIST,getinstance(),0); win1[8] = CreateWindow("Static", "Double Click to remove macro", WS_CHILD | WS_VISIBLE,20,250,200,14,hwnd,0,getinstance(),0); // masterX system options win2[1] = CreateWindow("Button", "Command Case Sensitivity" ,WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,70,200,20,hwnd,(HMENU)CMDCASE,getinstance(),0); win2[2] = CreateWindow("Button", "Allow VB MasterX Progs",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,20,90,200,20,hwnd,(HMENU)ALLOWVB,getinstance(),0); // the skins // global keys // Tree Control win4[1] = CreateWindowEx(WS_EX_STATICEDGE,"SysTreeView32",NULL,TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT | WS_CHILD | WS_VISIBLE,20,70,260,170,hwnd,0,getinstance(),0); win4[2] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Add",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,180,245,50,20,hwnd,(HMENU)MXADD,getinstance(),0); win4[3] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Rmv",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,180+50,245,50,20,hwnd,(HMENU)MXRMV,getinstance(),0); tv.hParent = NULL; tv.hInsertAfter = TVI_ROOT; tv.item.mask = TVIF_TEXT; tv.item.pszText = "Constants"; tv.hParent = (_TREEITEM*) SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); tv.item.pszText = "MasterX Restore CONTROL + SHIFT + M"; tv.hInsertAfter = TVI_LAST; SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); tv.item.pszText = "MasterX Minimize CONTROL + SHIFT + X"; SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); tv.item.pszText = "MasterX SysMenu CONTROL + SHIFT + S"; SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); tv.item.pszText = "MasterX Macros CONTROL + SHIFT + H"; SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); tv.item.pszText = "MasterX Quick Run CONTROL + SHIFT + R"; SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); // insert tv.hParent = NULL; tv.item.pszText = "User Defined"; mxuser = (_TREEITEM*)SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); loadoptions(); mx_ophwndload(); loadkeytree(); // Setup Check Box's, to Change Shit in the Options Structure clearctrl(); drawctrl(0); // Set Fonts int m; for(m = 0; m < 10; m++) { if(win1[m]) { SendMessage(win1[m],WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); } if(win2[m]) { SendMessage(win2[m],WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); } if(win3[m]) { SendMessage(win3[m],WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); } if(win4[m]) { SendMessage(win4[m],WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); } } HFONT bmFont; bmFont = CreateFont(13, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, VARIABLE_PITCH, "Arial"); SendMessage(win4[0],WM_SETFONT,(WPARAM)(HFONT)bmFont,0); SendMessage(win3[0],WM_SETFONT,(WPARAM)(HFONT)bmFont,0); SendMessage(win2[0],WM_SETFONT,(WPARAM)(HFONT)bmFont,0); SendMessage(win1[0],WM_SETFONT,(WPARAM)(HFONT)bmFont,0); if(mx_op.global_key) { SetTimer(hwnd,1,1,NULL); } break; case WM_TIMER: // global key scan, with command shell // i like this :) its useful 4 me int i; for(i = 0; i < 500; i++) { // do scan if(mx_op.keys.gkey[i].on) { if(GetAsyncKeyState(VK_CONTROL)) { if(GetAsyncKeyState(mx_op.keys.gkey[i].key)) { bool a; a = mx_op.keys.gkey[i].alt; if(a) { // alt shell (wait for alt release) if(GetAsyncKeyState(16)) { while(GetAsyncKeyState(16)) {} // shell masterx_interupt3 (mx_op.keys.gkey[i].cmd); } } else { // no alt shell (wait for ctrl release) while(GetAsyncKeyState(VK_CONTROL)) {} // shell masterx_interupt3(mx_op.keys.gkey[i].cmd); } } } } } break; case WM_NOTIFY: { int iPage = TabCtrl_GetCurSel(tabs); if(pre != iPage) { // Hide ALL Controls () In ARRAY clearctrl(); pre = iPage; drawctrl(pre); } break; } case WM_COMMAND: { // command process switch(HIWORD(wParam)) { case LBN_SELCHANGE: break; case LBN_DBLCLK: break; case BN_CLICKED: int check; int chk; // button click notification message switch(LOWORD(wParam)) { case AUTOSHOW: check = SendMessage(win1[1],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[1],BM_SETCHECK,chk,0); // set the option with value of chk mx_op.auto_show = convertint(chk); break; case GLOBALKEY: check = SendMessage(win1[2],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[2],BM_SETCHECK,chk,0); mx_op.global_key = convertint(chk); if(chk) { SetTimer(hwnd,1,1,NULL); } else { KillTimer(hwnd,1); } break; case AOL_ALLOW: check = SendMessage(win1[3],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[3],BM_SETCHECK,chk,0); mx_op.aol_allowconnect = convertint(chk); break; case AIM_ALLOW: check = SendMessage(win1[4],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[4],BM_SETCHECK,chk,0); mx_op.aim_allowconnect = convertint(chk); break; case AUTO_IDLE: check = SendMessage(win1[5],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[5],BM_SETCHECK,chk,0); mx_op.auto_idle = convertint(chk); break; case MACROON: check = SendMessage(win1[6],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[6],BM_SETCHECK,chk,0); mx_op.macroon = convertint(chk); break; case MACROLIST: check = SendMessage(win1[7],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win1[7],BM_SETCHECK,chk,0); mx_op.macroon = convertint(chk); if(chk) { EnableWindow(win1[7],TRUE); } else { EnableWindow(win1[7],FALSE); } break; // command case sensitivity case CMDCASE: check = SendMessage(win2[1],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win2[1],BM_SETCHECK,chk,0); mx_op.cmdcase = convertint(chk); break; // allow basic apps case ALLOWVB: check = SendMessage(win2[2],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(win2[2],BM_SETCHECK,chk,0); mx_op.allowvb = convertint(chk); break; // QUICK KEY BUTTON PRESSES case MXADD: SendMessage(addwin[1],WM_SETTEXT,1,(LPARAM)(LPCSTR)""); SendMessage(addwin[3],BM_SETCHECK,0,0); SendMessage(addwin[4],CB_SETCURSEL,-1,0); ShowWindow(getmxkey(),SW_SHOW); SetFocus(getmxkey()); break; case MXRMV: HTREEITEM hTree; hTree = (_TREEITEM*)SendMessage(win4[1],TVM_GETNEXTITEM,TVGN_CARET,0); if(hTree) { bool ocheck = false; int ass; for(ass = 0; ass < 500; ass++) { if(mx_op.keys.gkey[ass].hitem == hTree) { ocheck = true; } } if(ocheck == false){ break; } } else { break; } TreeView_DeleteItem(win4[1],hTree); int cc; for(cc = 0; cc < 500; cc++) { // we found whats being removed in are data structure if(mx_op.keys.gkey[cc].hitem == hTree) { mx_op.keys.gkey[cc].alt = false; strcpy(mx_op.keys.gkey[cc].cmd,""); mx_op.keys.gkey[cc].on = false; mx_op.keys.gkey[cc].key = 0; mx_op.keys.gkey[cc].hitem = NULL; break; // we destroyed da fuckuh } } break; } } } default: return DefWindowProc(hwnd,msg,wParam,lParam); } return 0; } // Clear the Controls void clearctrl() { for(int i = 0; i < 10; i++) { if(win1[i]) { ShowWindow(win1[i],SW_HIDE); } } for(i = 0; i < 10; i++) { if(win2[i]) { ShowWindow(win2[i],SW_HIDE); } } for(i = 0; i < 10; i++) { if(win3[i]) { ShowWindow(win3[i],SW_HIDE); } } for(i = 0; i < 10; i++) { if(win4[i]) { ShowWindow(win4[i],SW_HIDE); } } } void drawctrl(int ctrl) { int i; switch(ctrl) { case 0: for(i =0; i < 10; i++) { if(win1[i]) { ShowWindow(win1[i],SW_SHOW); } } break; case 1: for(i =0; i < 10; i++) { if(win2[i]) { ShowWindow(win2[i],SW_SHOW); } } break; case 2: for(i =0; i < 10; i++) { if(win3[i]) { ShowWindow(win3[i],SW_SHOW); } } break; case 3: for(i =0; i < 10; i++) { if(win4[i]) { ShowWindow(win4[i],SW_SHOW); } } break; } } // switch int checkswitch(int x) { if(x) { return 0; } else { return 1; } } bool convertint(int x) { if(x) { return true; } else { return false; } } int bswitch(bool x) { if(x) { return 1; } else { return 0; } } /* ADDING KEYPRESSES TO THE GLOBAL KEYS STRUCTURE WINDOW PROCESS*/ LRESULT APIENTRY AddKeyProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_CLOSE: ShowWindow(hwnd,SW_HIDE); break; case WM_CREATE: addwin[0] = CreateWindow("Static","Enter Command or Batch file to be called on keypress",WS_CHILD | WS_VISIBLE,5,5,290,10,hwnd,0,getinstance(),0); addwin[1] = CreateWindowEx(WS_EX_STATICEDGE,"Edit","",WS_CHILD | WS_VISIBLE | WS_BORDER,5,25,285,20,hwnd,0,getinstance(),0); addwin[2] = CreateWindow("Button","Control",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,5,45,75,20,hwnd,0,getinstance(),0); addwin[3] = CreateWindow("Button","Shift", WS_CHILD | WS_VISIBLE | BS_CHECKBOX,80,45,75,20,hwnd,(HMENU)KALT,getinstance(),0); addwin[4] = CreateWindow("ComboBox",NULL, CBS_DISABLENOSCROLL | WS_CHILD | CBS_DROPDOWNLIST| WS_VISIBLE,160,45,130,100,hwnd,0,getinstance(),0); int over; over = 30;//quick algebera shit so i dont have to recaclulate addwin[5] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Add", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,160+over,70,50,20,hwnd,(HMENU)KADD,getinstance(),0); addwin[6] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Cancel",BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,210+over,70,50,20,hwnd,(HMENU)KCAN,getinstance(),0); // add the letters //addwin[5] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Add",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, // CONTROL IS A MUST, ALT iS 'alternate' SendMessage(addwin[2],BM_SETCHECK,1,0); EnableWindow(addwin[2],false); addletters(); int z; for(z = 0; z < 10; z++) { if(addwin[z]) { SendMessage(addwin[z],WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); } } break; case WM_COMMAND: int check; int chk; switch(HIWORD(wParam)) { case BN_CLICKED: switch(LOWORD(wParam)) { case KADD: char cmdbuff[100]; char keys[10]; int cur; cur = SendMessage(addwin[4],CB_GETCURSEL,0,0); // first check stuff SendMessage(addwin[1],WM_GETTEXT,100,(LPARAM)(LPCSTR)cmdbuff); SendMessage(addwin[4],CB_GETLBTEXT,cur,(LPARAM)(LPCSTR)keys); if(cur == -1) { MessageBox(hwnd, "Please Select a Key..","Error Key needed", MB_ICONERROR); break; } if(strlen(cmdbuff) < 2) { MessageBox(hwnd, "Please Enter a Command", "Error Command Needed", MB_ICONERROR); break; } int off; off = mx_op.keys.getoffkey(); int mchk; mchk = SendMessage(addwin[3],BM_GETCHECK,0,0); mx_op.keys.gkey[off].alt = convertint(mchk); strcpy(mx_op.keys.gkey[off].cmd,cmdbuff); int thekey; thekey = keys[0]; mx_op.keys.gkey[off].key = thekey; mx_op.keys.gkey[off].on = true; // add char abuff[100]; // add buffer (display string) strcpy(abuff, cmdbuff); strcat(abuff, " - "); strcat(abuff, "CONTROL + "); if(mchk) { strcat(abuff, "SHIFT + "); } strcat(abuff, keys); tv.hParent = mxuser; tv.item.pszText = abuff; mx_op.keys.gkey[off].hitem = (_TREEITEM*) SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); SendMessage(hwnd,WM_CLOSE,0,0); SetFocus(win4[1]); UpdateWindow(win4[1]); break; case KCAN: SendMessage(hwnd,WM_CLOSE,0,0); break; case KALT: check = SendMessage(addwin[3],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(addwin[3],BM_SETCHECK,chk,0); // mx_op.aim_allowconnect = convertint(chk); break; } break; } break; default: return DefWindowProc(hwnd,msg,wParam,lParam); } return 0; } // add letters to combo box void addletters() { for(int i = 49; i < 91; i++) { char c; c = i; char c2[3]; c2[0] = c; c2[1] = 0; SendMessage(addwin[4],CB_ADDSTRING,0,(LPARAM)(LPCSTR)c2); } } // load keys into the tree on startup void loadkeytree() { for(int i = 0; i < 500; i++) { if(mx_op.keys.gkey[i].on) { char cmdbuff[100]; strcpy(cmdbuff,mx_op.keys.gkey[i].cmd); bool mchk; mchk = mx_op.keys.gkey[i].alt; char abuff[100]; // add buffer (display string) strcpy(abuff, cmdbuff); strcat(abuff, " - "); strcat(abuff, "CONTROL + "); if(mchk) { strcat(abuff, "SHIFT + "); } char keys[3]; keys[0] = mx_op.keys.gkey[i].key; keys[1] = 0; strcat(abuff, keys); tv.hParent = mxuser; tv.item.pszText = abuff; mx_op.keys.gkey[i].hitem = (_TREEITEM*) SendMessage(win4[1],TVM_INSERTITEM,0,(LPARAM)&tv); } } } // global key options structure // constructor mxkeyit::mxkeyit() { } int mxgkey::getoffkey() { for(int z = 0; z < 500; z++) { if(gkey[z].on == false) { return z; } } return -1; } mxOptions getop() { return mx_op; } //**************** AOL AUTO-CHILD MACRO WINDOW PROCESS********************* LRESULT APIENTRY MacProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { int check; int chk; switch(msg) { case WM_CLOSE: ShowWindow(hwnd,SW_HIDE); break; case WM_CREATE: macwin[0] = CreateWindowEx(WS_EX_STATICEDGE,"ListBox",NULL, LBS_NOTIFY | WS_CHILD | WS_VISIBLE,5,5,285+20,150,hwnd,(HMENU)ID_LIST1,getinstance(),0); macwin[1] = CreateWindow("Static","select area of window for macro to manipulate (z-order)", WS_VISIBLE | WS_CHILD,5,155,300,20,hwnd,0,getinstance(),0); macwin[2] = CreateWindow("Button","Auto Close",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,5,170,100,20,hwnd,(HMENU)ID_CLOSE,getinstance(),0); macwin[3] = CreateWindow("Button","Auto Click",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,105,170,100,20,hwnd,(HMENU)ID_CLICK,getinstance(),0); macwin[4] = CreateWindow("Button","Auto Minimize",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,210,170,100,20,hwnd,(HMENU)ID_MINI,getinstance(),0); macwin[5] = CreateWindow("Button","Auto Command Shell",WS_CHILD | WS_VISIBLE | BS_CHECKBOX,5,195,200,20,hwnd,(HMENU)ID_CMD,getinstance(),0); macwin[6] = CreateWindowEx(WS_EX_STATICEDGE,"Edit","",WS_CHILD | WS_VISIBLE,5,220,285+20,20,hwnd,0,getinstance(),0); macwin[7] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Add",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,5,250,50,20,hwnd,(HMENU)ID_ADD,getinstance(),0); macwin[8] = CreateWindowEx(WS_EX_STATICEDGE,"Button","Cancel",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,55,250,50,20,hwnd,(HMENU)ID_CAN,getinstance(),0); macwin[9] = CreateWindow("Static","Destroy the annoying stuff :)",WS_CHILD | WS_VISIBLE ,110,250,200,20,hwnd,0,getinstance(),0); // set font int bx; for(bx = 0; bx < 10; bx++) { if(macwin[bx]) { SendMessage(macwin[bx],WM_SETFONT,(WPARAM)(HFONT)getmxfont(),0); } } break; case WM_XCLEAR: // clear shit SendMessage(macwin[0],LB_RESETCONTENT,0,0); int k; for(k = 2; k < 6; k++) { SendMessage(macwin[k],BM_SETCHECK,0,0); } SendMessage(macwin[6],WM_SETTEXT,1,(LPARAM)(LPCSTR)""); HWND add; add = (HWND)wParam; // add stuff char cl[100];//class char tl[100];//title GetClassName(add,cl,100); SendMessage(add,WM_GETTEXT,100,(LPARAM)(LPCSTR)tl); char line[200]; strcpy(line,tl); // window title (#1 is title), else is equaly index child layout (in z-order) SendMessage(macwin[0],LB_ADDSTRING,255,(LPARAM)(LPCSTR)line); int off; int xoff; for(xoff = 0; xoff < 25; xoff++) { if(mx_op.macro.mac_win[xoff].on == false) { off = xoff; break; } } //// off = mx_op.macro.getoff(); // set class/title for future reference ///// strcpy(mx_op.macro.mac_win[off].cl,cl); /// strcpy(mx_op.macro.mac_win[off].tl,tl); if((off) || (off == 0)) { } else { break; } // window side on (only destroy if cancel, other wise just keep on add) /// mx_op.macro.mac_win[off].on = true; curoff = off; mx_op.macro.mac_win[off].on = true; strcpy(mx_op.macro.mac_win[off].cl,cl); strcpy(mx_op.macro.mac_win[off].tl,tl); /* window children */ HWND win; win = GetWindow(GetWindow(add, GW_CHILD), GW_HWNDFIRST); int count; count = 0; while(win != 0) { char tbuff[100]; char cbuff[100]; GetClassName(win, cbuff, 100); SendMessage(win,WM_GETTEXT,100,(LPARAM)(LPCSTR)tbuff); char aline[200]; // add to data structure strcpy(mx_op.macro.mac_win[off].child[count].cl,cbuff); strcpy(mx_op.macro.mac_win[off].child[count].tl,tbuff); mx_op.macro.mac_win[off].child[count].on = true; // display strcpy(aline, tbuff); strcat(aline, " : "); strcat(aline, cbuff); SendMessage(macwin[0],LB_ADDSTRING,200,(LPARAM)(LPCSTR)aline); win = GetWindow(win, GW_HWNDNEXT); count++; } SendMessage(macwin[0],LB_SETCURSEL,0,0); break; case WM_COMMAND: switch(HIWORD(wParam)) { case BN_CLICKED: switch(LOWORD(wParam)) { case ID_ADD: // save current and add to list saveoptions(); char abuff[100]; strcpy(abuff,mx_op.macro.mac_win[curoff].tl); strcat(abuff, " : "); strcat(abuff,mx_op.macro.mac_win[curoff].cl); SendMessage(win1[7],LB_ADDSTRING,255,(LPARAM)(LPCSTR)abuff); SendMessage(hwnd,WM_CLOSE,0,0); break; case ID_CAN: // Destroy Current ZeroMemory(&mx_op.macro.mac_win[curoff],sizeof(mx_op.macro.mac_win[curoff])); SendMessage(hwnd,WM_CLOSE,0,0); break; // the OPTIONS FER A WINDOW case ID_CLICK: check = SendMessage(macwin[3],BM_GETCHECK,0,0); chk = checkswitch(check); SendMessage(macwin[3],BM_SETCHECK,chk,0); int child_index; child_index = SendMessage(macwin[0],LB_GETCURSEL,0,0); if(child_index == 0) { // the window (); mx_op.macro.mac_win[curoff].click = convertint(check); } else { // its a child child_index--; // decrement by 1 if(child_index < 0){ break; } // ack no sel selected mx_op.macro.mac_win[curoff].child[child_index].click = convertint(check); } break; case ID_CLOSE: break; case ID_MINI: break; case ID_CMD: break; // all the checkbox option changes } break; // next case: case LBN_SELCHANGE: int loff; loff = SendMessage(macwin[0],LB_GETCURSEL,0,0); if(loff == -1) { break; } if(loff == 0) { } else { loff--; SendMessage(macwin[3],BM_SETCHECK,bswitch(mx_op.macro.mac_win[curoff].child[loff].click),0); } // LOAD UP NEW SETTINGS break; } break; default: return DefWindowProc(hwnd,msg,wParam,lParam); } return 0; } // *************** AOL CHILD WINDOW SELECTOR (FOR MACRO EDIT) LRESULT APIENTRY AolLayout(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_CLOSE: ShowWindow(hwnd,SW_HIDE); break; case WM_CREATE: break; default: return DefWindowProc(hwnd,msg,wParam,lParam); } return 0; }