Exemplo n.º 1
0
//=============================================================
UserPipePage::UserPipePage(QWidget *parent):QWidget(parent)
{
    QGroupBox *UserPipe=new QGroupBox(tr("User's Own Segmentation Pipeline"));
    PaintFilter=new QListWidget;
    PaintFilter->setViewMode(QListView::IconMode);
    PaintFilter->setIconSize(QSize(90, 90));
    PaintFilter->setMovement(QListView::Static);
    PaintFilter->setMaximumHeight(250);

    StartPipe=new QPushButton("Start PipeLine");
    SourceLabel=new QLabel(tr("Source Filter"));
    UsedLabel=new QLabel(tr("Used Filter"));

    AddItem=new QPushButton(tr("Add Filter"));
    ClearItem=new QPushButton(tr("Clear All"));

    SourceFilter=new QListWidget;

    UsedFilter=new QListWidget;
    //UsedFilter->setMaximumWidth(170);

    QHBoxLayout *listLayout=new QHBoxLayout;
    listLayout->addWidget(SourceFilter);
    listLayout->addWidget(UsedFilter);
    QHBoxLayout *labelLayout=new QHBoxLayout;
    labelLayout->addWidget(SourceLabel);
    labelLayout->addWidget(UsedLabel);
    QHBoxLayout *buttonLayout=new QHBoxLayout;
    buttonLayout->addWidget(AddItem);
    buttonLayout->addWidget(ClearItem);

    QVBoxLayout *pipeLayout=new QVBoxLayout;
    pipeLayout->addWidget(PaintFilter);
    pipeLayout->addLayout(labelLayout);
    pipeLayout->addLayout(listLayout);
    pipeLayout->addLayout(buttonLayout);
    pipeLayout->addWidget(StartPipe);
    UserPipe->setLayout(pipeLayout);

    QVBoxLayout *mainLayout=new QVBoxLayout;
    mainLayout->addWidget(UserPipe);
    mainLayout->addStretch(1);
    setLayout(mainLayout);

    connect(AddItem,SIGNAL(clicked()),this,SLOT(ADDItem()));
    connect(ClearItem,SIGNAL(clicked()),UsedFilter,SLOT(clear()));
    connect(this,SIGNAL(countChanged()),this,SLOT(CreatIcon()));
    connect(ClearItem,SIGNAL(clicked()),PaintFilter,SLOT(clear()));
    connect(StartPipe,SIGNAL(clicked()),this,SLOT(CallPipeline()));
}
Exemplo n.º 2
0
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     // код уведомления
	UINT idChild = LOWORD(wParam);     // идентификатор дочернего окна
	HWND hwndChild = (HWND)lParam;     // дескриптор дочернего 
	PAINTSTRUCT ps;
	
	switch (message){
	case WM_CREATE:{
		PWINDOWINFO pwi = malloc(sizeof(WINDOWINFO));
		if (!pwi){
			CloseWindowMy(hwnd);
			break;
		}
		GetWindowInfo(hwnd, pwi);
		int w = pwi->rcClient.right - pwi->rcClient.left;
		int h = pwi->rcClient.bottom - pwi->rcClient.top;
		free(pwi);
		HWND hwndExit = CreateWindowA("button", "закрыть", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 0, h - 30, w / 2, 30, hwnd, (HMENU)ID_BUTTON_EXIT, NULL, NULL);
		HWND hwndTurn = CreateWindowA("button", "свернуть", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, w / 2, h - 30, w / 2, 30, hwnd, (HMENU)ID_BUTTON_TURN, NULL, NULL);
		HWND hwndAutoRun = CreateWindowA("button", NULL, WS_CHILD | BS_AUTOCHECKBOX | WS_VISIBLE, 300, 131, 15, 15, hwnd, (HMENU)ID_BUTTON_AUTORUN, NULL, NULL);
		HWND hwndHotKey = CreateWindowA("Edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_READONLY, 230, 10, 50, 20, hwnd, (HMENU)ID_EDIT_HOTKEY, NULL, NULL);
		glbOldEditProc = SetWindowLongW(hwndHotKey, GWL_WNDPROC, (LONG)newEditProc); //замена процесса обработки сообщений едита 
		ShowWindow(hwndHotKey, SW_NORMAL);
		ShowWindow(hwndExit, SW_NORMAL);
		ShowWindow(hwndAutoRun, SW_NORMAL);
		ShowWindow(hwndTurn, SW_NORMAL);
		UINT ChekAutoRunResult = ChekAutoRun(); //проверяем, есть ли автозагрузка 
		if (ChekAutoRunResult == MYERROR){

			CloseWindowMy(hwnd);
			break;

		}
		else if (ChekAutoRunResult == SUCCESS)
			SendMessageA(hwndAutoRun, BM_SETCHECK, 1, 0); //устанавливаем галочку автозагрузки, если она есть
		CreatIcon(hwnd);
		INT hotKeyCode = SetHotKeyToEdit(hwndHotKey);
		if (hotKeyCode == MYERROR){//установка горячей клавиши
			CloseWindowMy(hwnd);
			break;
		}
		pInitHotKeyDll(hotKeyCode,hwndHotKey); //в длл ее
		break;
	}

	case WM_ICON:{
		switch (lParam)  {
		case WM_LBUTTONDBLCLK:{
			ShowWindow(hwnd, SW_NORMAL); // работа с иконкой

			break;
		}
		default:
			break;
		}
		break;
	}
	case WM_COMMAND:{
		if (idChild == ID_BUTTON_EXIT){
			CloseWindowMy(hwnd);  
		}
		if (idChild == ID_BUTTON_TURN){

			ShowWindow(hwnd, SW_HIDE);

		}


		if (idChild == ID_BUTTON_AUTORUN){ // если захотели автозагрузку
			LRESULT result = SendMessageA(hwndChild, BM_GETCHECK, 0, 0);
			if (result == BST_CHECKED){ //если галочка ставится
				char *szFileName = malloc(MAX_LENGTH);
				if (!szFileName){
					CloseWindowMy(hwnd);







					break;
				}
				memset(szFileName, 0, MAX_LENGTH);


				GetModuleFileNameA(NULL, szFileName, MAX_PATH);

				if (SetAutoRunToReg((LPBYTE)szFileName, strlen(szFileName)) == MYERROR){//добавляем наше приложение в автозагрузку
					glbPaintError = MYERROR;
					SendMessageA(hwndChild, BM_SETCHECK, 0, 0); // если вдруг что-то пошло не так, выводим ошибку
					InvalidateRect(hwnd, 0, 0);
					SendMessageA(hwnd, WM_PAINT, 0,0);



				}
				else{
					glbPaintError = SUCCESS;
					InvalidateRect(hwnd, 0,0);
					SendMessageA(hwnd, WM_PAINT, 0, 0);
				}
			}
			else {
				if (SetAutoRunToReg(NULL, 0) == MYERROR){//удаляем наше приложение из автозагрузки dsfdsSDFDSFsdfdasdsadASDSADfdfdsfSDFDSS
					glbPaintError = MYERROR;
					SendMessageA(hwndChild, BM_SETCHECK, 1, 0);
					InvalidateRect(hwnd, 0, 0);
					SendMessageA(hwnd, WM_PAINT, 0,0);

				}
				else{
					glbPaintError = SUCCESS;
					InvalidateRect(hwnd, 0, 0);
					SendMessageA(hwnd, WM_PAINT, 0, 0);


				}

			}
		}
		break;
	}




	case WM_PAINT:{


		HDC hdc = BeginPaint(hwnd, &ps);
		HBRUSH hBrush = CreateSolidBrush(RGB(0xff, 0xff, 0xff));
		HPEN hPen = CreatePen(PS_SOLID, 2, RGB(0xff, 0xff, 0xff));
		SelectObject(hdc, hPen);
		SelectObject(hdc, hBrush);        


		 
		WINDOWINFO wi;
		GetWindowInfo(hwnd, &wi);
		int w = wi.rcClient.right - wi.rcClient.left;
		int h = wi.rcClient.bottom - wi.rcClient.top;

		Rectangle(hdc, 0, 0, w, h);
		TextOutA(hdc, 10, 10, "Клавиша для переключения:", 25);
		TextOutA(hdc, 10, 30, "Для смены клавиши, нажмите мышкой на рамку,", 42);
		TextOutA(hdc, 10, 50, "Затем нажмите нужную клавишу из списка:", 39);
		TextOutA(hdc, 10, 70, "1. Shift", 8);
		TextOutA(hdc, 10, 85, "2. Pause", 8);
		TextOutA(hdc, 10, 100, "3. ctrl", 7);
		TextOutA(hdc, 10, 130, "Запуск Свичера при загрузке Windows:", 36);


		if (glbPaintError == MYERROR){

			TextOutA(hdc, 10, 115, "Не удается изменить состояние автозагрузки.", 43);

		}
		EndPaint(hwnd, &ps);
	}

	default:
		return DefWindowProc(hwnd, message, wParam, lParam);
	}
	return 0;
}