Guest User

Untitled

a guest
May 24th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5. #include <conio.h>
  6. #include <cstdlib>
  7. #include <sstream>
  8. using namespace std;
  9. vector<string> windowStyles;
  10. string LIS="=(HBITMAP)LoadImage(0, (LPCTSTR)";
  11. string LIE=", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE);\n";
  12. string Background[3]={
  13. "(HBRUSH) COLOR_BACKGROUND;\n",
  14. "CreatePatternBrush(",
  15. "CreateSolidBrush(RGB("};
  16. struct STYLE
  17. {
  18.     string backTexture;
  19.     string Hwnd;
  20.     string lpszClassName;
  21.     string lpfnWndProc;
  22.     vector<int>styles;
  23.     int hbrBackground;
  24.     string x,y,w,h;
  25.     string title;
  26.     int ChildWindow;
  27. };
  28. int main ()
  29. {
  30.     windowStyles.push_back("WS_BORDER");
  31.     windowStyles.push_back("WS_CAPTION");
  32.     windowStyles.push_back("WS_CHILD");
  33.     windowStyles.push_back("WS_CHILDWINDOW");
  34.     windowStyles.push_back("WS_CLIPCHILDREN");
  35.     windowStyles.push_back("WS_CLIPSIBLINGS");
  36.     windowStyles.push_back("WS_DISABLED");
  37.     windowStyles.push_back("WS_DLGFRAME");
  38.     windowStyles.push_back("WS_GROUP");
  39.     windowStyles.push_back("WS_HSCROLL");
  40.     windowStyles.push_back("WS_ICONIC");
  41.     windowStyles.push_back("WS_MAXIMIZE");
  42.     windowStyles.push_back("WS_MAXIMIZEBOX");
  43.     windowStyles.push_back("WS_MINIMIZE");
  44.     windowStyles.push_back("WS_MINIMIZEBOX");
  45.     windowStyles.push_back("WS_OVERLAPPED");
  46.     windowStyles.push_back("WS_OVERLAPPEDWINDOW");
  47.     windowStyles.push_back("WS_POPUP");
  48.     windowStyles.push_back("WS_POPUPWINDOW");
  49.     windowStyles.push_back("WS_SIZEBOX");
  50.     windowStyles.push_back("WS_SYSMENU");
  51.     windowStyles.push_back("WS_TABSTOP");
  52.     windowStyles.push_back("WS_THICKFRAME");
  53.     windowStyles.push_back("WS_TILED");
  54.     windowStyles.push_back("WS_TILEDWINDOW");
  55.     windowStyles.push_back("WS_VISIBLE");
  56.     windowStyles.push_back("WS_VSCROLL");
  57.     char choice(' ');
  58.     int menu(0);
  59.     string filename;
  60.     vector<STYLE>windows;
  61.     while(choice!='q')
  62.     {
  63.         cout << "n.) Create new style\n";
  64.         cout << "s.) Write styles to .cpp file\n";
  65.         cout << "d.) Delete style\n";
  66.         cout << "q.) Quit\n";
  67.         choice=getch();
  68.         if(choice=='n')
  69.         {
  70.             STYLE newStyle;
  71.             cout << "Style name:";
  72.             getline(cin,newStyle.lpszClassName);
  73.             cout << "Message Procedure Function name:";
  74.             getline(cin,newStyle.lpfnWndProc);
  75.             do
  76.             {
  77.                 cout << "Backgroud type\n";
  78.                 cout << "1.) Windows Default Background\n";
  79.                 cout << "2.) Textured Bitmap\n";
  80.                 cout << "3.) Solid Color\n";
  81.                 newStyle.hbrBackground=getch();
  82.                 newStyle.hbrBackground-=49;
  83.                 if(newStyle.hbrBackground==1)
  84.                 {
  85.                     cout << "Enter path of Bitmap Texture(with quotes and double slashes):";
  86.                     getline(cin,newStyle.backTexture);
  87.                 }
  88.                 if(newStyle.hbrBackground==2)
  89.                 {
  90.                     cout << "Enter RGB format of colour, seperated by commas (r,g,b):";
  91.                     getline(cin,newStyle.backTexture);
  92.                     newStyle.backTexture+=")";
  93.                 }
  94.             }while(newStyle.hbrBackground<0||newStyle.hbrBackground>2);
  95.             cout << "Enter title of hwnd:";
  96.             getline(cin,newStyle.title);
  97.             cout << "Enter hwnd variable name:";
  98.             getline(cin,newStyle.Hwnd);
  99.             cout << "Enter x position of window:";
  100.             getline(cin,newStyle.x);
  101.             cout << "Enter y position of window:";
  102.             getline(cin,newStyle.y);
  103.             cout << "Enter width of window:";
  104.             getline(cin,newStyle.w);
  105.             cout << "Enter height of window:";
  106.             getline(cin,newStyle.h);
  107.             int s(0);
  108.             choice=' ';
  109.             while(choice!='n')
  110.             {
  111.                 system("cls");
  112.                 cout << "n.) Next\n";
  113.                 cout << "[DOWN].) Scroll down\n";
  114.                 cout << "[ UP ].) Scroll UP\n";
  115.                 cout << "[ENTER].) Add to styles\n";
  116.                 if(newStyle.styles.size()>0)
  117.                 {
  118.                     cout << windowStyles[newStyle.styles[0]];
  119.                     for (int i=1; i<newStyle.styles.size(); i++)
  120.                     {
  121.                         cout << "|" << windowStyles[newStyle.styles[i]];
  122.                     }
  123.                 }
  124.                 cout << endl << ">>";
  125.                 for (int i=s; i<s+10; i++)
  126.                 {
  127.                     cout << "\t" << windowStyles[i%windowStyles.size()] << endl;
  128.                 }
  129.                 choice=getch();
  130.                 if(choice==(char)72)s--;
  131.                 if(choice==(char)80)s++;
  132.                 if(choice==(char)13)newStyle.styles.push_back(s%windowStyles.size());
  133.             }
  134.             system("cls");
  135.             cout << "Windows\n";
  136.             cout << "0.) Desktop\n";
  137.             for (int i=0; i<windows.size(); i++)
  138.             {
  139.                 cout << i+1 << ".) " << windows[i].title << endl;
  140.             }
  141.             cout << "Child of:";
  142.             string str;
  143.             getline(cin,str);
  144.             stringstream(str)>>newStyle.ChildWindow;
  145.  
  146.             windows.push_back(newStyle);
  147.         }
  148.         if(choice=='s')
  149.         {
  150.             cout << "Enter File Name:";
  151.             getline(cin,filename);
  152.             vector<string> fileData;
  153.             fileData.push_back("#include <windows.h>\n");
  154.             fileData.push_back("#include <vector>\n");
  155.             fileData.push_back("using namespace std;\n");
  156.             for (int i=0; i<windows.size(); i++)
  157.             {
  158.                 fileData.push_back("LRESULT CALLBACK ");
  159.                 fileData.push_back(windows[i].lpfnWndProc);
  160.                 fileData.push_back(" (HWND, UINT, WPARAM, LPARAM);\n");
  161.             }
  162.             fileData.push_back("vector<char *> ClassNames;\n");
  163.             fileData.push_back("int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nCmdShow)\n{\n");
  164.             for (int i=0; i<windows.size(); i++)
  165.             {
  166.                 fileData.push_back("\tClassNames.push_back(\"");
  167.                 fileData.push_back(windows[i].lpszClassName);
  168.                 fileData.push_back("\");\n");
  169.             }
  170.             for (int i=0; i<windows.size(); i++)
  171.             {
  172.                 if(windows[i].hbrBackground==1)
  173.                 {
  174.                     fileData.push_back("\tHBITMAP ");
  175.                     string Texture="texture";
  176.                     Texture+=(char)(i+'A');
  177.                     fileData.push_back(Texture);
  178.                     fileData.push_back(LIS);
  179.                     fileData.push_back(windows[i].backTexture);
  180.                     fileData.push_back(LIE);
  181.                     windows[i].backTexture=Texture;
  182.                 }
  183.             }
  184.             for (int i=0; i<windows.size(); i++)
  185.             {
  186.                 fileData.push_back("\tHWND ");
  187.                 fileData.push_back(windows[i].Hwnd);
  188.                 fileData.push_back(";\n");
  189.             }
  190.             fileData.push_back("\tMSG messages;\n");
  191.             for (int i=0; i<windows.size(); i++)
  192.             {
  193.                 fileData.push_back("\tWNDCLASSEX ");
  194.                 string Wndcl="wincl";
  195.                 Wndcl+=(char)(i+'A');
  196.                 Wndcl+=";\n";
  197.                 fileData.push_back(Wndcl);
  198.             }
  199.             for (int i=0; i<windows.size(); i++)
  200.             {
  201.                 string Wndcl="\twincl";
  202.                 Wndcl+=(char)(i+'A');
  203.                 fileData.push_back(Wndcl);
  204.                 fileData.push_back(".hInstance = hThisInstance;\n");
  205.                 fileData.push_back(Wndcl);
  206.                 fileData.push_back(".lpszClassName = ClassNames[");
  207.                 string str;
  208.                 char Buffer[10];
  209.                 str=itoa(i,Buffer,10);
  210.                 fileData.push_back(str);
  211.                 fileData.push_back("];\n");
  212.                 fileData.push_back(Wndcl);
  213.                 fileData.push_back(".lpfnWndProc = ");
  214.                 fileData.push_back(windows[i].lpfnWndProc);
  215.                 fileData.push_back(";\n");
  216.                 fileData.push_back(Wndcl);
  217.                 fileData.push_back(".style = CS_DBLCLKS;\n");
  218.                 fileData.push_back(Wndcl);
  219.                 fileData.push_back(".cbSize = sizeof (WNDCLASSEX);\n");
  220.                 fileData.push_back(Wndcl);
  221.                 fileData.push_back(".hIcon = LoadIcon (NULL, IDI_APPLICATION);\n");
  222.                 fileData.push_back(Wndcl);
  223.                 fileData.push_back(".hIconSm = LoadIcon (NULL, IDI_APPLICATION);\n");
  224.                 fileData.push_back(Wndcl);
  225.                 fileData.push_back(".hCursor = LoadCursor (NULL, IDC_ARROW);\n");
  226.                 fileData.push_back(Wndcl);
  227.                 fileData.push_back(".lpszMenuName = NULL;\n");
  228.                 fileData.push_back(Wndcl);
  229.                 fileData.push_back(".cbClsExtra = 0;\n");
  230.                 fileData.push_back(Wndcl);
  231.                 fileData.push_back(".cbWndExtra = 0;\n");
  232.                 fileData.push_back(Wndcl);
  233.                 fileData.push_back(".hbrBackground = ");
  234.                 fileData.push_back(Background[windows[i].hbrBackground]);
  235.                 if(windows[i].hbrBackground!=0)
  236.                 {
  237.                     fileData.push_back(windows[i].backTexture);
  238.                     fileData.push_back(");\n\n");
  239.                 }
  240.                 Wndcl="wincl";
  241.                 Wndcl+=(char)(i+'A');
  242.                 fileData.push_back("\tif (!RegisterClassEx (&");
  243.                 fileData.push_back(Wndcl);
  244.                 fileData.push_back("))return 0;\n\n");
  245.             }
  246.             for(int i=0; i<windows.size(); i++)
  247.             {
  248.                 string Wndcl="wincl";
  249.                 Wndcl+=(char)(i+'A');
  250.                 fileData.push_back("\t");
  251.                 fileData.push_back(windows[i].Hwnd);
  252.                 fileData.push_back(" = CreateWindowEx (0,\"");
  253.                 fileData.push_back(windows[i].lpszClassName);
  254.                 fileData.push_back("\",\"");
  255.                 fileData.push_back(windows[i].title);
  256.                 fileData.push_back("\",");
  257.                 if(windows[i].styles.size()>0)
  258.                 {
  259.                     fileData.push_back(windowStyles[windows[i].styles[0]]);
  260.                     for (int j=1; j<windows[i].styles.size(); j++)
  261.                     {
  262.                         fileData.push_back("|");
  263.                         fileData.push_back(windowStyles[windows[i].styles[j]]);
  264.                     }
  265.                 }
  266.                 fileData.push_back(",");
  267.                 fileData.push_back(windows[i].x);
  268.                 fileData.push_back(",");
  269.                 fileData.push_back(windows[i].y);
  270.                 fileData.push_back(",");
  271.                 fileData.push_back(windows[i].w);
  272.                 fileData.push_back(",");
  273.                 fileData.push_back(windows[i].h);
  274.                 fileData.push_back(",");
  275.                 if(windows[i].ChildWindow==0)fileData.push_back("HWND_DESKTOP");
  276.                 else
  277.                 {
  278.                     fileData.push_back(windows[windows[i].ChildWindow-1].Hwnd);
  279.                 }
  280.                 fileData.push_back(",NULL,hThisInstance,NULL);\n\n");
  281.             }
  282.             fileData.push_back("\twhile (GetMessage (&messages, NULL, 0, 0))\n");
  283.             fileData.push_back("\t{\n");
  284.             fileData.push_back("\t\tTranslateMessage(&messages);\n");
  285.             fileData.push_back("\t\tDispatchMessage(&messages);\n");
  286.             fileData.push_back("\t}\n");
  287.             fileData.push_back("\treturn messages.wParam;\n");
  288.             fileData.push_back("}\n\n\n");
  289.             for (int i=0; i<windows.size(); i++)
  290.             {
  291.                 fileData.push_back("LRESULT CALLBACK ");
  292.                 fileData.push_back(windows[i].lpfnWndProc);
  293.                 fileData.push_back(" (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)\n");
  294.                 fileData.push_back("{\n");
  295.                 fileData.push_back("\tswitch (message)\n\t{\n");
  296.                 fileData.push_back("\t\tcase WM_DESTROY:\n");
  297.                 fileData.push_back("\t\t\tPostQuitMessage (0);\n");
  298.                 fileData.push_back("\t\t\tbreak;\n\n");
  299.                 fileData.push_back("\t\tcase WM_PAINT:\n");
  300.                 fileData.push_back("\t\t{\n\n");
  301.                 fileData.push_back("\t\t\tbreak;\n");
  302.                 fileData.push_back("\t\t}\n\n");
  303.                 fileData.push_back("\t\tdefault: return DefWindowProc (hwnd, message, wParam, lParam);\n");
  304.                 fileData.push_back("\t}\n\treturn 0;\n}\n\n");
  305.             }
  306.             ofstream out(filename.c_str());
  307.             for (int i=0; i<fileData.size(); i++)
  308.             {
  309.                 cout << fileData[i];
  310.                 out << fileData[i];
  311.             }
  312.             out.close();
  313.         }
  314.         if(choice=='d')
  315.         {
  316.             for (int i=0 ;i<windows.size(); i++)
  317.             {
  318.                 cout << i << ".)" << windows[i].title << endl;
  319.             }
  320.  
  321.         }
  322.     }
  323.     return 0;
  324. }
Add Comment
Please, Sign In to add comment