#include #include #include "Answers.h" #include #include #include #define IDC_CHECKBOX1 1500 // *** these are your control ID's but we will have to assign them to the checkbox windows below... *** #define IDC_CHECKBOX2 1501 #define IDC_CHECKBOX3 1502 #define IDC_NEXTBOX 1503 #define IDC_PREVBOX 1504 LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); char szClassName[ ] = "Tester"; HINSTANCE hInst; HWND hCheckBox1, hCheckBox2, hCheckBox3, hNextBox, hPrevBox; vector list; stringstream sstr; string str[1024]; int Counter=0,Total=1,Score,CheckScore=0,xtemp=1,ytemp=0,NumCounter=0,NumArray[256]; int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { Answers test; test.getString(list); for(int i=0; i!=list.size(); i++) { if(list[i]!=""&&list[i]!="@") { str[xtemp]+=' '; str[xtemp]+=list[i]; } else if(list[i]=="") { if(ytemp<3) { ytemp++; } else { ytemp=1; } if(xtemp%4==0&&(xtemp+2)%4!=0) { Total++; ytemp--; } xtemp++; } else if(list[i]=="@")//true answer { NumArray[NumCounter]=ytemp; NumCounter++; } } hInst = hThisInstance; HWND hwnd; MSG messages; WNDCLASSEX wincl; wincl.hInstance = hThisInstance; wincl.lpszClassName = szClassName; wincl.lpfnWndProc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbSize = sizeof (WNDCLASSEX); wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wincl.hCursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszMenuName = NULL; wincl.cbClsExtra = 0; wincl.cbWndExtra = 0; wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND; if (!RegisterClassEx (&wincl)) return 0; hwnd = CreateWindowEx ( 0, szClassName, "Tester", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 350, 350, HWND_DESKTOP, NULL, hThisInstance, NULL ); ShowWindow (hwnd, nCmdShow); while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { const char *z = str[1+(4*Counter)].c_str(),*y = str[2+(4*Counter)].c_str(),*x = str[3+(4*Counter)].c_str(),*w = str[4+(4*Counter)].c_str(); switch (message) { case WM_CREATE : hCheckBox1 = CreateWindowEx (WS_EX_TRANSPARENT, TEXT("button"),0, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 0, 60, 16, 16, hwnd, (HMENU) IDC_CHECKBOX1, hInst, NULL) ; hCheckBox2 = CreateWindowEx (WS_EX_TRANSPARENT, TEXT("button"),0, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 0, 100, 16, 16, hwnd, (HMENU) IDC_CHECKBOX2, hInst, NULL); hCheckBox3 = CreateWindowEx (WS_EX_TRANSPARENT, TEXT("button"),0, WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 0, 140, 16, 16, hwnd, (HMENU) IDC_CHECKBOX3, hInst, NULL); hNextBox = CreateWindowEx (WS_EX_TRANSPARENT, TEXT("button"),"Next", WS_CHILD | WS_VISIBLE |BS_PUSHLIKE | BS_AUTORADIOBUTTON, 100, 180, 50, 25, hwnd, (HMENU) IDC_NEXTBOX, hInst, NULL) ; hPrevBox = CreateWindowEx (WS_EX_TRANSPARENT, TEXT("button"),"Prev", WS_CHILD | WS_VISIBLE | BS_PUSHLIKE | BS_AUTORADIOBUTTON, 40, 180, 50, 25, hwnd, (HMENU) IDC_PREVBOX, hInst, NULL); break; case WM_PAINT: PAINTSTRUCT ps; RECT lpRect; lpRect.top=0; lpRect.left=17; lpRect.bottom=50; lpRect.right=300; HDC hdc; hdc = BeginPaint(hwnd, &ps); DrawText(hdc,z,_tcslen(z),&lpRect,DT_LEFT|DT_WORDBREAK|DT_NOPREFIX); TextOut(hdc, 17, 60, y, _tcslen(y)); TextOut(hdc, 17, 100, x, _tcslen(x)); TextOut(hdc, 17, 140, w, _tcslen(w)); EndPaint(hwnd, &ps); break; case WM_COMMAND: { switch(LOWORD(wParam)) // *** Tells us which control ID sent a message *** { case IDC_CHECKBOX1: // *** user clicked box 1 *** { if(SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX1),BM_GETCHECK,0,0) == BST_CHECKED) { CheckScore=1; SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX2), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX3), BM_SETCHECK, BST_UNCHECKED, 0); } else { CheckScore=0; } } break; case IDC_CHECKBOX2: // *** user clicked box 2 *** { if(SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX2),BM_GETCHECK,0,0) == BST_CHECKED) { CheckScore=2; SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX1), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX3), BM_SETCHECK, BST_UNCHECKED, 0); } else { CheckScore=0; } } break; case IDC_CHECKBOX3: // *** user clicked box 3 *** { if(SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX3),BM_GETCHECK,0,0) == BST_CHECKED) { CheckScore=3; SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX1), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hwnd,IDC_CHECKBOX2), BM_SETCHECK, BST_UNCHECKED, 0); } else { CheckScore=0; } } break; case IDC_NEXTBOX: // *** user clicked next button *** { if(SendMessage(GetDlgItem(hwnd,IDC_NEXTBOX),BM_GETCHECK,0,0) == BST_CHECKED) { if(Counter!=Total&&CheckScore!=0) { if(NumArray[Counter]==CheckScore) { Score++; } if((Counter+1)==Total) { sstr<<"Your Score is:\n"< #include #include #include #include using namespace std; class Answers { public: Answers(); void getString(vector& list); //int getChar(); //int getLine(); protected: private: }; #endif // ANSWERS_H /************************************************************* Answers.cpp file *************************************************************/ #include "Answers.h" #include #include #include #include #include using namespace std; Answers::Answers() { //ctor } void Answers::getString(vector& list) { ifstream fi; bool tf=false; string str,str2; while(tf==false) { cout<<"What test would you like to do?\n"; cin>>str2; str2+=".txt"; cout<