Ir ao conteúdo
  • Cadastre-se

Cambalinho

Membro Pleno
  • Posts

    896
  • Cadastrado em

  • Última visita

Tudo que Cambalinho postou

  1. moderador: desculpa mas nao achei o subforum mais correcto estou super desanimado com o meu chrome(ate podia ser firefox ou internet explorer), num site nao me mostra os bonecos do chat e nao consigo entender o porque. e parece eu ser o unico a ter o problema(que dor de cabeça ) ja desinstalei o chrome, reiniciei e voltei a instalar. mas o problema continua. ja passei o ccleaner(limpezas) e o limpeza do windows e o problema continua. eu só notei problemas após eles mudarem de servidor. mas mesmo assim consegui os bonecos do chat ate hoje de manha. apos alguns minutos de entrar no chat perdi completamente os bonecos alguem me explicar se estou-me a esquecer de alguma coisa? eu ja tentei tudo o que sei(excepto formatar) e nao resolvi o problema (se for preciso 1 print screen eu faço)
  2. eu estou a criar 1 variavel do tipo Graphics numa class: class image{private: ULONG_PTR m_gdiplusToken; Gdiplus::GdiplusStartupInput gdiplusStartupInput; HDC hdcimage=CreateCompatibleDC(NULL); Gdiplus::Graphics graphic(hdcimage); mas recebo 1 erro: " 'hdcimage' is not a type" porque o erro?
  3. muito obrigado a todos. eu fiz aquela macro para ser mais especifico e evitar os argumentos da template eu podia fazer 1 class event, mas ficava com o mesmo 'problema': tinha que meter os argumentos da template.. por isso a macro (ontem nao respondi, porque nao consegui entrar no forum )
  4. porque quando fazemos 1 funçao template, quando a usar-mos, nao nos preocupamos com os argumentos entre '<>', mas em class temos que o fazer? template < typename T>void foobar (T arg1, T arg2){ // Código relevante aqui, como de praxe. // A única diferença é que você pode tratar T como se fosse um tipo.} quando usamos a funçao: foobar(3,5);//oufoobar("hello","bye"); (a funçao nao faz nada, mas é para mostrar a forma de utilizaçao) mas nas classes: template<typename T>class test{ public: test(T nome) { }};//usartest<string> test("joaquim); volto a perguntar: se com funçoes nao preciso usar '<tipos>', porque o tenho de o fazer com as classes?
  5. eu fiz esta macro: #define event(eventname, ... ) std::function<void(__VA_ARGS__ )> eventname mas os programadores estão sempre a pedir para evitar macros, mas esta nao me dá problemas. alguem pode explicar melhor sobre evitar macros?
  6. desculpa, mas isso é o mesmo que o site do MSDN o que precisava(depois de tanto esforço) era o layout do joystick: https://onedrive.live.com/?cid=C3EF456E15C8DEB6&id=C3EF456E15C8DEB6!1259&v=3 o Hat é o POV. para ser activado o LED do Analog tem de estar a vermelho. outra coisa, eu tenho os pontos X,Y e 1 centro C... como posso obter a angulo com estes dados? eu tenho esta formula, mas estou a obter resultados incorrectos inst->Text=to_string((int)atan2((b.dwXpos-32511),(b.dwYpos-32511))*(180/PI)); a frase é imprimida... mas o resultado esta incorrecto eu estou a usar esta formula: result = atan2 (y-c,x-c) * 180 / PI; por favor me digam se estou errado (observaçao eu obtenho só 2 diferentes valores)
  7. o portatil é 1 Toshiba Satellite com Windows 7. após 1 formaçao e resinstalaçao do SO, o SO bloqueia(nem o rato se move) durante minutos e é quando calha(é aleatorio acontecer) e depois volta ao normal. alguem me pode explicar alguma coisa?
  8. existem alguns conceitos\definiçoes\caracteristicas do joystick que nao sei e gostava de saber. - sabem aqueles 2 butoes que funcionam em modo circular? como se chamam estes butoes? eis a estrutura JOYINFOEX: typedef struct joyinfoex_tag { DWORD dwSize; DWORD dwFlags; DWORD dwXpos; DWORD dwYpos; DWORD dwZpos; DWORD dwRpos; DWORD dwUpos; DWORD dwVpos; DWORD dwButtons; DWORD dwButtonNumber; DWORD dwPOV; DWORD dwReserved1; DWORD dwReserved2;} JOYINFOEX; - o dwSize é para indicar-mos o tamanho da estrutura: dwSize = sizeof(JOYINFOEX); - o dwFlags é para indicar qual é o dado que queremos receber... eu prefiro usar a flag JOY_RETURNALL, porque assim posso receber os dados todos; - alguem me pode explicar os membros dwXpos, dwYpos, dwZpos, dwRpos, dwUpos, dwVpos? (apesar dos dwXpos, dwYpos serem para as direcçoes); - o dwButtons é para indicar o estados butoes em forma de bits; - o dwButtonNumber é para indicar quantos butoes estão pressionados no memento; - o que é o dwPOV?
  9. como fazer 1 super class: 1 - ao criar 1 objecto com a funçao CreateWindowEx(), mandamos o 'this' como o ultimo parametro: hwnd = CreateWindowEx(WS_EX_CLIENTEDGE|CS_HREDRAW | CS_VREDRAW , classname, strCaption.c_str(), WS_OVERLAPPEDWINDOW | BS_NOTIFY, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, parent, NULL, mod, this); 2 - no procedimento das mensagens criamos o pointeiro da class: form *inst = (form *)GetWindowLongPtr(HandleWindow, GWLP_USERDATA); 3 - na mesagem WM_NCCREATE, nós damos o valor ao ponteiro: switch(msg) { case WM_NCCREATE: { CREATESTRUCT *p = (CREATESTRUCT *)lParam; inst = (form *)p->lpCreateParams; SetWindowLongPtr(HandleWindow, GWLP_USERDATA, (LONG_PTR)inst); inst->hwnd = HandleWindow; } break; agora vou vos dar mais umas dicas: 1 - imagem que o BS_NOTIFY do butao(ou outro objecto) nao funciona(no procedimento de mensagens do butao): case WM_COMMAND: { switch(HIWORD(wParam)) { case BN_CLICKED: { inst->MouseClick(); } break; } break; } break; então no procedimento de mensagens do form, fazemos: case WM_COMMAND: { SendMessage((HWND)lParam , WM_COMMAND, wParam, lParam); } break; 1 - derem conta que vos falha alguma tecla das mensagens do teclado ou outra mensagem do procedimento, revejam o Ciclo de Mensagens: while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } este ciclo pode ser alterado e tambem pode fazer-mos perder algumas funcionalidades... eu uso o ciclo desta forma e nao tenho problemas. muito obrigado e fiquem
  10. 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
  11. 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
  12. 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
  13. 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?
  14. concordo contigo, as baterias deveriam ter muito mais autonomia(durar mais tempo)
  15. 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?
  16. é 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
  17. 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.
  18. 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
  19. 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?
  20. desculpa, mas eu te disse o que sei desculpa
  21. 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á
  22. muito obrigado por tudo amigo
  23. 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
  24. 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
  25. 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

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!