Ir ao conteúdo
  • Cadastre-se

Cambalinho

Membro Pleno
  • Posts

    942
  • Cadastrado em

  • Última visita

Tudo que Cambalinho postou

  1. o problema estava na minha funçao propriedades e tinha de passar o 'this'(veja as macros Set() e Get()): /*properties- how use create 1 property with macro: PROPERTY(TypeName,PropertyName,getfunction, setfunction)- never forget to do 1 Copy Constructor inside of class's, that uses the property, for avoid copy the 'this' value\adress and use a diferent memory adress*/template <typename T>class property{private: T PropertyValue; std::function<T(void)> getf; std::function<void(T)> setf;public: property(const T value) { getf=nullptr; setf=nullptr; PropertyValue=value; }; property(const property &value) : PropertyValue(value.PropertyValue) , getf(value.getf) { } property(std::function<T(void)> GetFunction=nullptr,std::function<void(T)> SetFunction=nullptr) { setf=SetFunction; getf=GetFunction; } property& operator=(const T &value) { PropertyValue=value; if (setf!=nullptr) setf(value); return *this; } property& operator=(const property &value) { PropertyValue = value.PropertyValue; if (setf!=nullptr) setf(PropertyValue); return *this; } operator T() { if (getf!=nullptr) return getf(); else return PropertyValue; } friend ostream& operator<<(ostream& os, property& dt) { if(dt.getf==nullptr && dt.setf==nullptr) os << dt.PropertyValue; else if (dt.getf!=nullptr) os << dt.getf(); return os; } friend istream& operator>>(istream &input, property &dt) { input >> dt.PropertyValue; if (dt.setf!=nullptr) dt.setf(dt.PropertyValue); return input; } friend istream &getline(istream &in, property &dt) { getline(in, dt.PropertyValue); if (dt.setf!=nullptr) dt.setf(dt.PropertyValue); return in; }};template<typename T, typename Fnc1_t, typename Fnc2_t, typename classthis>property<T> GetProperty(Fnc1_t Getter, Fnc2_t Setter, classthis clsthis){ return property<T>(std::bind(Getter, clsthis), std::bind(Setter, clsthis, std::placeholders::_1));}#define PROPERTY(TypeName,PropertyName,getfunction, setfunction) \property<TypeName> PropertyName{std::bind(&getfunction, *this),std::bind(&setfunction, *this, std::placeholders::_1)}#define Get(x) [this]()->x#define Set(...) [this](__VA_ARGS__)->void agora veja como a uso(com as macros): class k{private: string name; int age;public: property<string> Name { Get(string) { return name; }, Set(string strname) { name=strname; } }; property<int> Age { Get(int) { return age; }, Set(int intage) { age=intage; } };}; obrigado a todos
  2. muito obrigado, mas ja resolvi: //test if a key\combination keys is pressed bool AreAllKeysPressed(const std::vector<int> &keys) { int state = 0x8000; for (int key : keys) { state &= GetAsyncKeyState(key); } return (state) != 0; } bool CombineKeys(std::vector<std::vector<int>> const &keys) { static bool PreviousKeyPressed=false; static DWORD StartTimer = GetTickCount(); static DWORD AllKeysTimer = 0; static int i=0; //test if the 1st key was pressed if((AreAllKeysPressed(keys[0])==true) && PreviousKeyPressed==false) { i=0; PreviousKeyPressed=true; StartTimer = GetTickCount(); AllKeysTimer=0; i++; } //if the last combination have only 1 key else if((i==(int)keys.size()-1) && (AreAllKeysPressed(keys[(int)keys.size()-1])==true) && PreviousKeyPressed==true && keys[(int)keys.size()-1].size()==1) { PreviousKeyPressed=false; StartTimer = 0; AllKeysTimer=0; i=0; return true; } //testing if the keys are pressed in same time //but you only have 1 second for that else if(GetTickCount() - AllKeysTimer <= 500 && PreviousKeyPressed==true) { if(AreAllKeysPressed(keys[i])==true && i!=(int)keys.size()-1) { PreviousKeyPressed=true; StartTimer = GetTickCount(); AllKeysTimer=0; i++; } else if(AreAllKeysPressed(keys[(int)keys.size()-1])==true && i==(int)keys.size()-1) { PreviousKeyPressed=false; StartTimer = 0; AllKeysTimer=0; i=0; return true; } } //test if the StartTimer have 2 seconds else if ((GetTickCount() - StartTimer >= 2000))//now i put the timer here { StartTimer =0; AllKeysTimer=0; PreviousKeyPressed=false; i=0; } //test if the last key was pressed else if((i==(int)keys.size()-1) && (AreAllKeysPressed(keys[(int)keys.size()-1])==true) && PreviousKeyPressed==true) { StartTimer=0; AllKeysTimer=GetTickCount(); } //test if the next key was pressed else if((AreAllKeysPressed(keys[i])==true) && PreviousKeyPressed==true) { PreviousKeyPressed=true; StartTimer = GetTickCount(); AllKeysTimer=0; i++; } else if((AreAllKeysPressed(keys[i])==false) && PreviousKeyPressed==true) { AllKeysTimer=GetTickCount(); } else { PreviousKeyPressed=false; StartTimer = GetTickCount(); AllKeysTimer=0; i=0; } return false; } #define CombinationKeys(...) CombineKeys({__VA_ARGS__}) e eis exemplos: if(CombinationKeys({'A','S'},{'W'},{'R','T'}, {'O','P'})==true) MessageBox(NULL,"hi", "hello",MB_OK);if(CombinationKeys({'A','S'},{'W'},{'R'}, {'O','P'})==true) MessageBox(NULL,"hi", "hello",MB_OK);if(CombinationKeys({'A'},{'W'},{'R'}, {'O'})==true) MessageBox(NULL,"hi", "hello",MB_OK);if(CombinationKeys({'A'},{'W'},{'R','T'}, {'O','P'})==true) MessageBox(NULL,"hi", "hello",MB_OK); esta muito porreiro, espero que gostem
  3. mas estou com 1 problema, por isso é que estou com dificuldade: qual é a probabilidade, no segundo conjunto, o utilizador pressionar 2 teclas ao mesmo tempo de imediato? se é que me entendes
  4. eu estou a construir 1 funçao para fazer 1 combinaçao de teclas e esta a funcionar... mas agora estou actualizar para poder pressionar 2 ou mais teclas ao mesmo tempo. tive de alterar a funçao que verifica se as teclas estão pressionadas: enum AllKeyState{ Nokey, All, Some};AllKeyState AreAllKeysPressed2(const std::vector<int> &keys){ int state = 0x8000; AllKeyState allkeys=Nokey; for (int key=0; key<keys.size()-1; key++) { if(GetAsyncKeyState(keys[key]) & 0x8000) { allkeys=All; } else { if(allkeys==All) { return Some; } else { return Nokey; } } } return All;} esta funçao testa se alguma tecla do vector keys esta precionada. se todas tiverem pressionadas, eu recebo All, se algumas eu recebo Some, se nenhuma tecla estiver pressionada, eu recebo Nokey. mas estou a receber os resultados incorrectos alguem me pode explicar o que fiz mal no for?
  5. concordo contigo, as baterias deveriam ter muito mais autonomia(durar mais tempo)
  6. eis o construtor da minha class: property(std::function<T(void)> GetFunction=nullptr,std::function<void(T)> SetFunction=nullptr) agora ve esta class como teste: class k{private: string name;public: property<string> Name([]()->string {return name;}, [](string strname)->void {name=strname;});}; o IDE da-me varios erros.. será que me enganei a escrever as lambdas como parametros? os erros dizem que me esqueci '[' ou '['.. algo parecido. mas o que me podem dizer?
  7. é esse o objectivo amigo a bateria actual, com 1 tema mais bonito e a activaçao do 3G, consome a bateria em menos de 24h ja fiz o mesmo com o Nokia 6630 e esta impecavel
  8. muito obrigado. mas falta-me 1 resposta: se der mais Wh ao telemovel, é bom ou mau? como disse á pouco é de 3,5 para 4,4.
  9. a bateria do meu Nokia N95 é 1 BL-5F com as seguintes caracteristicas: - 950mAh; - 3.7V; - 3,5Wh; li 1 informaçao de que a bateria BL-6F(do Nokia N95 8GB's) é compativel com o meu telemovel... sim tem os mesmo encaixes, mas tem as seguintes caracteristicas: - 1200mAh; - 3.7V; - 4,4Wh; alguem me pode explicar melhor o que é 'Wh'? e o 'mAh'? apesar do 'Wh' de 1 bateria para a outra ser diferente, pode dar problemas no meu telemovel? muito obrigado
  10. eu estou a fazer 1 class form, mas estou a ter vários problemas void setParent(HWND parent=GetDesktopWindow()) { WNDCLASSEX FormClass; char classname[]="form"; HINSTANCE mod = (HINSTANCE)GetModuleHandle(NULL); FormClass.cbSize = sizeof(WNDCLASSEX); FormClass.style = 0; FormClass.lpfnWndProc = WndProcForm; FormClass.cbClsExtra = 0; FormClass.cbWndExtra = 0; FormClass.hInstance = mod; FormClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); FormClass.hCursor = LoadCursor(NULL, IDC_ARROW); FormClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); FormClass.lpszMenuName = NULL; FormClass.lpszClassName = classname; FormClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // register the new window class" RegisterClassEx(&FormClass); SetProp(hwnd, formpropname, (HANDLE)FormClass.lpfnWndProc); hwnd = CreateWindowEx(0, classname, "The title of my window", WS_OVERLAPPEDWINDOW | WS_TABSTOP, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, parent, NULL, mod, (LPVOID) this); if (hwnd == NULL) MessageBox(NULL, "Can't create the control", "error", MB_OK); SetProp(hwnd, formclassprop, (HANDLE)this); ShowWindow(hwnd, SW_NORMAL); UpdateWindow(hwnd); clrBackColor= GetBkColor(GetDC(parent)); clrTextColor = GetTextColor(GetDC(parent)); RECT a; GetClientRect(hwnd,&a); intTop=a.top; intLeft=a.left; intWidth=a.right-a.left; intHeight=a.bottom-a.top; } o form é mostrado, mas tenho alguns problemas com o procedimento de menssagens. static LRESULT CALLBACK WndProcForm(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static POINT PreviousLocation, Location; static bool Tracking = false; static MouseButtons MBButtons; static bool blControl=false; static bool blShift=false; static bool blResize=false; static int xPos=0; static int yPos=0; static UINT_PTR timerid; static bool blnDrag=false; //preparing the message loop for be used in super class way //Getting the parent procedure WNDPROC oldproc = (WNDPROC)GetProp(GetDesktopWindow(), formpropname); if (oldproc == NULL) MessageBox(NULL, "Can't find old procedure", "error", MB_OK | MB_ICONEXCLAMATION); //add the instance class to inst pointer form *inst = (form*)GetProp(hwnd, formclassprop); if (inst == NULL && msg == WM_NCCREATE) { inst = (form*)(((LPCREATESTRUCT)lParam)->lpCreateParams); SetProp(hwnd, formclassprop, (HANDLE)inst); } if (inst == NULL) MessageBox(NULL, "Can't find the instance pointer", "error", MB_OK); //Working with messages switch(msg) { case WM_CREATE: { RECT a; GetWindowRect(hwnd,&a); Create(a.left, a.top); } break; case WM_COMMAND: { SendMessage(hwnd,WM_COMMAND,wParam,lParam); } break; 1 - porque nao obtenho o oldproc(eu penso que isso tem haver de poder ter varias instancias do objecto\control)? 2 - porque nao obtenho o ponteiro inst? (estas 2 questoes funcionam bem com butoes e outros) 3 - quando meto 1 butao e clico, o SendMessage() deveria fazer o seu trabalho, mas em vez disso o sistema operativo da-me 1 mensagem de erro e encerra o programa o que estou a fazer de errado?
  11. desculpa, mas eu te disse o que sei desculpa
  12. ve la se é isto: Chip Number: Philips SAA7133/35 Hybrid Capture Device or averme Chip Description: PCI audio and video broadcast decoder or only avertv dvb-t pci card Notes: http://downlo http://www.avermedia.eu/avertv/FR/Product/ProductDetail.aspx?Id=21 http://www.4shared.com/zip/wvWNInNx/vs-ltv7131rf.html foi o que consegui encontrar... mas eis o site: http://www.pcidatabase.com/vendor_details.php?id=838 copia aqueles links e ve se dá
  13. muito obrigado por tudo amigo
  14. pode ser problema do computador, ja tentastes outras caixas de som? ás vezes 1 pico de corrente\trovoada pode danificar algum componente... desculpa nao te conseguir resolver o problema, mas estou a tentar eu dava-te outra forma para ires buscar os drivers, mas pelo que entendi: o problema pode ser hardware. mas se quiseres saber como: - fazes duplo clique no driver; - na janela que abriu clicas na tab Detalhes; - ao clicar na seta preta, selecionas o ID; - podes fazer CTRL+C para copiar; - neste site escolhes o dado que queres inserir: http://www.pcidatabase.com/ (vendor or device); - segues as instruçoes e talvez consigas o que pretendes. outra coisa: quando actualizas ou fazes 1 nova instalação, convem desinstalar o anterior para evitar conflitos. mas como deixou de funcionar de 1 dia para o outro, penso que possa ser 1 virus ou problema de hardware.... verifica melhor
  15. verifica os drivers no Gestor de Dispositivos(se tiver o pont de exclamaçao é porque tens que reinstalar os drivers ou tens 1 problema de hardware) e as configuraçoes de som. pode ter sido 1 virus ou outra cena. por isso faz 1 limpeza geral a viroses e ficheiros temporarios Nota: se for windows vista ou superior, a configuração de som faz-se consuante o programa activo(para cada programa tem o seu volume ou mesmo o 'mute') espero ter-te ajudado
  16. muito obrigado por responderes. eu percebo o &, |, ~.. mas ainda estou confuso com o << ou >> binario. a que a API nos dá 1 valor binario.. ve este exemplo: 1110111 imagina que quero o bit 1? e o 4? como os calculo?(bits individuais) imagina que quero os bits 5 e 6... como os calculo?(bits em conjunto) estas questoes sao o meu problema
  17. os manuais mostram numeros biinarios e como utilizar as operaçoes binarias. mas continuo com muitas duvidas na programaçao para windows(windows API\win32) temos, por exemplo, a mensagem WM_KEYDOWN e os parametros wparam, lparam. eu preciso de explicaçoes sobre o lparam. ele tem 1 valor que eu posso lidar com bits... mas eu estou confuso: 1- se as operaçoes, que nos ensinam os manuais, sao em binario... o valor do lparam tambem é binario ou tenho de converter para binario? 2 - num valor binario, como posso saber quais saos os bits da posiçao x ate á posiçao y?
  18. eu nem sabia que era possivel isso na banda larga... ainda nao sei como isso funciona(falo sobre as operadoras), mas muito obrigado pela dica amigo outra coisa: mas se achas que tambem pode ser 1 erro do windows, por favor me diz algo
  19. eu uso a kanguru á anos e ate ao ultimo ano nunca tive prolemas como agora ja liguei varias vezes a eles, mas parece que estou no limite da cobertura e nao me dao assistencia fiz, agora, 1 teste de velocidade e no fim o relatorio dizia que podia ter erros no windows. eu ja fiz downloads a 500KB's como a 20KB's(1 grande diferença) e ás vezes(muitas) perco o sinal alguem me pode aconcelhar algo? (nao posso meter net com o cabo, porque ainda nao chegou a Fibra Optica... e nao queria mudar de rede, porque parece que as outras sao piores)
  20. quando utilizo 1 class template, ao fazer 1 nova instancia\objecto, tenho de meter o tipo de variavel.(linha 1) mais tarde posso mudar esse tipo de variavel com a mesma instancia? 1: TemplateClassName<int> a(100); posso, agora, converter a para string?
  21. ja entendi que o auto é 1 forma automatica de o compilador reconhecer o tipo de dados que recebe na inicializaçao.(linha 1) 1: auto b="ola";2: b=100; mas ve a linha 2....como posso fazer para ser permitido? como posso converter 1 auto int para 1 auto string(falando da mesma variavel)?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!