Ir ao conteúdo
  • Cadastre-se

Cambalinho

Membro Pleno
  • Posts

    942
  • Cadastrado em

  • Última visita

Tudo que Cambalinho postou

  1. eu tenho 1 player MemUp MP4 usado. mas vejo 2 problemas: 1 - ja tentei sacar varios conversores de videos. mas sem sucesso. detecta AVI sem problemas, mas ao abria 'erro formato'. podem me ajudar a resolver o problema? 2 - os cabos USB parecem ser iguais, mas nem todos carregam o MP4. usei varios cabos, mas nenhum carrega. só o cabo do MP3, parece resultar. alguem me pode explicar? muito obrigado
  2. salve salve honestamente eu ja descobri o problema e ja o resolvi. talvez a sua ideia esteja correcta, mas eu perdia sempre o endereço da variavel devido a outro problema: o mtparameterthread, todas vezes que usava '()', os valores eram sempre alterados e isso é que me dava problemas. como resolvi? criei 1 vector e agora ja nao os perco outra coisa: o pc nao me garante 1 multitarefa por ordem de chamada, como resolvi? meti 1 delay() apos o CreateThread() e agora funciona 5* muito obrigado por tudo
  3. eu fiz 1 classe Multithread para me facilitar a utilizaçao da multitarefa: class Multithread { private: HANDLE hThread=NULL; DWORD dwThreadId=0; bool blnSingleThreadAtTime=false; function<void()> multithreadfunction=NULL; function<void(LPVOID param)> multithreadparameterfunction=NULL; HANDLE myEvent = CreateEvent(0, 0, 0, 0); struct mytread { Multithread *classpointer=NULL; LPVOID multithreadparameters=NULL; }; mytread mtparameterthread; public: void SingleThreadAtTime(bool SingleThread) { blnSingleThreadAtTime=SingleThread; } bool SingleThreadAtTime() { return blnSingleThreadAtTime; } void WaitCondition() { WaitForSingleObject(myEvent, INFINITE); } void SetCondition() { SetEvent(myEvent); } static DWORD WINAPI MyThreadFunction( LPVOID lpParam ) { static bool blnfirsttime=false; Multithread *pThis = static_cast<Multithread*>(lpParam); if(pThis->blnSingleThreadAtTime==true && blnfirsttime==true) pThis->WaitCondition(); blnfirsttime=true; pThis->multithreadfunction(); if(pThis->blnSingleThreadAtTime==true && blnfirsttime==true) pThis->SetCondition(); return 0; } static DWORD WINAPI MyParameterThreadFunction( LPVOID lpParam ) { static bool blnfirsttime=false; mytread *pThis = static_cast<mytread*>(lpParam); if(pThis->classpointer->blnSingleThreadAtTime==true && blnfirsttime==true) pThis->classpointer->WaitCondition(); blnfirsttime=true; pThis->classpointer->multithreadparameterfunction(pThis->multithreadparameters); if(pThis->classpointer->blnSingleThreadAtTime==true && blnfirsttime==true) pThis->classpointer->SetCondition(); delay(100); return 0; } Multithread(std::function<void()> SetFunction) { multithreadfunction=SetFunction; } Multithread( function<void(LPVOID)> SetFunction ) { multithreadparameterfunction =SetFunction; } //corrigir template<typename tpVariant> Multithread( function<void(tpVariant)> SetFunction ) { multithreadparameterfunction = [=]( LPVOID pv ) { SetFunction( static_cast<tpVariant>( pv ) ); }; } template<typename tpVariant> void operator ()(tpVariant &vrParam) { LPVOID lpParam=static_cast<LPVOID>(&vrParam); mtparameterthread.classpointer=this; mtparameterthread.multithreadparameters=lpParam; hThread= CreateThread( NULL, // default security attributes 0, // use default stack size Multithread::MyParameterThreadFunction, // thread function name static_cast<LPVOID>(&mtparameterthread), // argument to thread function 0, // use default creation flags &dwThreadId); delay(100); } void operator ()(LPVOID vrParam) { mtparameterthread.classpointer=this; mtparameterthread.multithreadparameters=vrParam; hThread= CreateThread( NULL, // default security attributes 0, // use default stack size Multithread::MyParameterThreadFunction, // thread function name static_cast<LPVOID>(&mtparameterthread), // argument to thread function 0, // use default creation flags &dwThreadId); delay(100); } void operator ()() { hThread = CreateThread( NULL, // default security attributes 0, // use default stack size &Multithread::MyThreadFunction, // thread function name this, // argument to thread function 0, // use default creation flags &dwThreadId); delay(100); } ~Multithread() { CloseHandle(hThread); CloseHandle(myEvent); } }; a partir daqui fiz 1 funçao para input: Multithread mtRead{ [&]( LPVOID varname) { blnread=true; string *strTest=static_cast<string*>(varname); ostringstream address; address << strTest; std:string name = address.str(); DebugText(name); while(blnread==true) { MSG TMsg; do { if(blnread==false) break; TranslateMessage(&TMsg); if(blnread==false) break; DispatchMessage(&TMsg); if(blnread==false) break; } while (PeekMessage(&TMsg, 0, 0, 0, true) || (blnread==true)); } *strTest=readstring; readstring=""; }}; void read(string &txttext) { CHARFORMAT2 cf ; cf.cbSize = sizeof( CHARFORMAT2 ) ; cf.dwMask = CFM_COLOR | CFM_BACKCOLOR | CFM_EFFECTS2 ; cf.crTextColor =clrTextColor; cf.dwEffects =0; cf.crBackColor = clrTextBackColor; SendMessage(consoleedit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf ); mtRead(static_cast<LPVOID>(&txttext)); } imagina chamar a funçao read() varias vezes... agora observe o output do endereço da variavel que irá receber o novo valor: a minha questao é: porquê é que estou a perder os endereços da variavel?(0x28fac4) eu estou a tentar fazer tudo o que sei sobre programaçao, mas nao consigo entender bem o que se passa.... talvez a: mtRead(static_cast<LPVOID>(&txttext)); nao esteja a proteger bem o endereço da variavel... mas nao sei. alguem me pode explicar?
  4. sim sao 1 pouco diferentes. a diferença entre essa imagem e o meu comando é que o meu comando tem, á frente, a chave com o ship do carro
  5. o problema é que é maior mas este fim de semana vou tentar reparar o problema. mas ja encomendei os interruptores do controle remoto(desculpem os termos.. ainda sou limitado em brasileiro). eu ainda tenho umas dicas para deixar aqui para todos lerem e entenderem algo que percebi com o controle remoto: 1 - nao pisca ou nao passa sinal: mude as 2 pilhas\baterias; 2 - pisca mas nao envia sinal: verifique se a placa, no interior, está posicionada no sitio certo. pois a capa interna tem 2 pinos de plastico que seguram a placa. se estiverem partidos, pode colocar 1 pouco de papel á frente fazendo com que a placa seja pressionada e presa na traseira. yah. eu fiz alguns erros com o controle remoto, mas aprendi muito com isso. antes de mudar o interruptor eu fiz 2 coisas: 1 - meti 1 pouco de papel á frente para prender a placa(o minimo possivel); 2 - 1 pista estava gasta por isso meti solda. após isto o comando ja funcionava normal. mas como ja tinha tentado trocar os interruptores, acabei por danificar 1. é vida. mas espero que este tópico ajude muita gente e evite os meus erros outra coisa: é possivel cortar uns pinos pequenos e aquece-los e os meter onde estavam os pinos de plastico, na capa interior, mas nao tenho a certeza se podem vir a ser condutores ou nao. esta observaçao fica ao criterio de cada pessoa. mas o papel ja é suficiente e só precisa de abrir o controle remoto, quando mudar as pilhas\baterias.
  6. apos o soldar, ele pisca mas nao funciona o problema esta na altura do butao que escolhi vejam as imagens: à primeira vista, o problema esta na altura do butao e alem disso a primeira imagem tem 1 titulo: 'Pulsador Smd para Comandos Auto'... agora percebo porque errei vou encomandar os 2 butoes depois volto a comunicar. muito obrigado
  7. eu nao tenho instalado o boost... devido tambem ao meu grande projecto eu ja pensei nas threads. mas posso perdir os endereços das variavels, por causa de chamar a thread mais que 1 vez mas ve este codigo numa classe: void APIDoEvents() { static bool blnAPIDoEvents=false; if(blnAPIDoEvents==true) return; blnAPIDoEvents=true; MSG msg; BOOL result; while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE ) ) { result = ::GetMessage(&msg, NULL, 0, 0); if (result == -1) { // Handle errors/exit application, etc. } else { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } blnAPIDoEvents=false; } void read(string &txttext) { //pthread_create(&some_thread, nullptr, &console::multithreadproc,static_cast<void*>(&args)); while(blnread==true) { APIDoEvents(); if(IsWindowVisible(frmconsolewindow)==FALSE) blnread=false; } blnread=true; strreaded=&txttext; } agora chamo o read() 3 vezes: cw.write(NewLine,"enter the 1st name: "); string intnumber; cw.read(intnumber); cw.write("enter the 2nd name: "); string intnumber2; cw.read(intnumber2); cw.write("enter the 3rd name: "); string intnumber3; cw.read(intnumber3); img.Backcolor=RGB(255,0,0); img.Backcolor=-1; img.draw(cnsconsole,0,20);89 apos a segunda leitura de dados as intruçoes img sao executadas. é o que pretendo, mas porque só apos a segunda read()?(eu queria na primeira) outra coisa: o write() tambem espera pela condiçao da variavel.. está super
  8. numa classe eu tenho o metodo read(): void read(string &txttext) { //esperar que o blnread seja false //só depois vai para as intruçoes seguintes while(blnread==true) { APIDoEvents(); if(IsWindowVisible(frmconsolewindow)==FALSE) blnread=false; } blnread=true; strreaded=&txttext; } como invoco o read(): string intnumber3; cw.read(intnumber3); img.Backcolor=RGB(255,0,0); img.Backcolor=-1; img.draw(cnsconsole,0,20); como posso manter a espera no read, mas passar para a instruçao seguinte(sem falar do metodo read(), pois este esta á espera de 1 condiçao): img.Backcolor=RGB(255,0,0); ???
  9. ando a alguns dias a tentar resolver 1 problema que nao consigo encontrar resultados é pena esta materia nao estão simplicada na internet eu estou a subscrever o std::ostream& operator << e std::istream& operator >> para puder salvar\ler a Image num ficheiro. para isso tenho de usar as IStreams. mas nao estou a obter resultados eis o actual codigo: friend std::ostream& operator << (std::ostream& lhs, const image& rhs) { //Create an empty IStream: IStream* pIStream = nullptr; HGLOBAL hg=NULL; if(CreateStreamOnHGlobal(hg, FALSE, (LPSTREAM*)&pIStream)!=S_OK) DebugText("error on creating an empty IStream"); //choose image format for save it on IStream: // Get encoder class id for jpg compression // for other compressions use // image/bmp // image/jpeg // image/gif // image/tiff // image/png CLSID pngClsid; GetEncoderClsid(L"image/gif", &pngClsid); // Setup encoder parameters EncoderParameters encoderParameters; encoderParameters.Count = 1; encoderParameters.Parameter[0].Guid = EncoderQuality; encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues = 1; // setup compression level ULONG quality = 50; encoderParameters.Parameter[0].Value = &quality; // Save the image to the stream if(rhs.img->Save(pIStream, &pngClsid, &encoderParameters) != Ok) { pIStream->Release(); DebugText("error on saving to IStream"); } //getting the stream size: int buffsize=GlobalSize(&hg); char *pBuff = new char[buffsize]; ULONG ulBytesRead; //Read the stream to pBuff if(pIStream->Read(pBuff,buffsize, &ulBytesRead)!=S_OK) DebugText("error on saving IStream to buffer"); //write the stream size on file lhs << buffsize; //write pBuff data on file lhs << pBuff; //clean resources delete pBuff; pIStream->Release(); return lhs; } friend std::istream& operator >> (std::istream& lhs, image& rhs) { //getting IStream size: int streamsize; lhs.read(reinterpret_cast<char*>(&streamsize), sizeof(streamsize)); IStream* pIStream = nullptr; // Create stream with 0 size HGLOBAL hg= ::GlobalAlloc(GMEM_MOVEABLE,streamsize); GlobalLock(hg); lhs.read(reinterpret_cast<char*>(&hg),sizeof(streamsize)); GlobalUnlock(hg); if(CreateStreamOnHGlobal(&hg, TRUE, (LPSTREAM*)&pIStream)!=S_OK) DebugText("error on creating an empty IStream"); //reading IStream on Image class: if(rhs.img->FromStream(pIStream,FALSE)!=S_OK) DebugText("error reading stream to Image"); //realease resources: pIStream->Release(); GlobalFree(hg); return lhs; } só o FromStream me dá o erro (DebugText() é 1 funçao minha para criar 1 forma de Debug sobre os erros) mas o que estou a fazer de errado? nem consigo perceber se escrever correctamente no ficheiro
  10. eu nunca usei Matrix. e nunca calculei Matrizes(nem percebo se tem alguma coisa haver). alguem me pode explicar o que é Matrix e como usar? outra coisa: Matrix tambem dá para funcionar em modo 'se a côr è vermelha, então muda para verde'? e sombra?
  11. Code Blocks - GCC : compilar as 2 DLL's dependentes do executavel é mexer nos direitos de autor? falo das libgcc_s_sjlj-1.dll e libstdc++-6.dll. o exe, depois de compilado, precisa delas para executar.
  12. eu comprei 1 cartao lycamobile para puder falar para a frança a preços mais baixos. (o meu telemovel é 1 Samsung Android Galaxy Young 2) tenho 2 questoes: 1 - como posso ficar com chamadas mais baratas entre lycamobile?(posso nem estar activado correctamente sem saber) 2 - como posso activar o Resumo de Chamada?
  13. finalmente ja recebi os interruptores. mas tive 1 azar o meu ferro antigo nao esta a conseguir fazer o serviço, mas 1 amigo meu tem 1 maquina propria vou falar com ele. isto dos ferros, com uns anos, dos chineses é complicado. segundo o vendedor, nao preciso de me preocupar com a posiçao do interruptor, porque só tem 1 posiçao. e os pinos sao metidos de frente ou tras. é mais simples do que pensava
  14. "Abra o Internet Explorer, navegue para Ferramentas > Opções de Internet > Segurança > Controles ActiveX > Plugins." como? https://onedrive.live.com/?id=C3EF456E15C8DEB6!1289&cid=C3EF456E15C8DEB6&group=0&parId=C3EF456E15C8DEB6!197&o=OneUp
  15. nao interessa qual é o browser, eu continuo com o mesmo erro como posso activar, correctamente o Flash Player? (ja testei com outro addon, mas, por exemplo, perco o som do chat do facebook)
  16. tenho 1 função que retorna CHOOSEFONT: CHOOSEFONT ShowSelectFont(HWND hwnd=GetForegroundWindow()){ CHOOSEFONT cf = {sizeof(CHOOSEFONT)}; LOGFONT lf; cf.Flags = CF_EFFECTS | CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS; cf.hwndOwner = hwnd; cf.lpLogFont = &lf; cf.rgbColors = RGB(0,0,0); cf.lpLogFont->lfStrikeOut=FALSE; cf.lpLogFont->lfUnderline=FALSE; cf.lpLogFont->lfHeight=-MulDiv(12, GetDeviceCaps(GetDC(hwnd), LOGPIXELSY), 72);//change font size _tcscpy(cf.lpLogFont->lfFaceName, "Arial" ); //we must include tchar.h if(ChooseFont(&cf)) { HFONT hf = CreateFontIndirect(&lf); if(hf) { return cf; } else { MessageBox(hwnd, "Font creation failed!", "Error", MB_OK | MB_ICONEXCLAMATION); //return (CHOOSEFONT)(HFONT)GetStockObject(DEFAULT_GUI_FONT); } }} mas por alguma razao parece que estou a perder os dados devido ao cf.lpLogFont ser 1 ponteiro. como posso resolver esta funçao?
  17. como posso saber o HWND de 1 barra de ferramentas de 1 janela? acredito que existe 1 função para isso, mas não a encontro finalmente encontrei: HWND GetDesktopToolBar(){ return FindWindow("Shell_Traywnd", "");} testei com o ShowWindow() e funciona. talvez isto ajude alguem. e talvez eu posso vir a meter butões na barra de ferramentas. aceito mais dicas para inserir butões tambem. muito obrigado
  18. estou a tentar comunicar com o site\empresa depois lhe conto alguma coisa. muito obrigado por tudo. desculpa alguma coisa, mas ja nao toco na electronica alguns anos... é normal ter algumas duvidas
  19. muito obrigado. mas nas imagens nao consigo ver as posições\numeração dos pinos do interruptor. podes me ajudar mais 1 pouco?
  20. é o comando do carro(fecha e abre o carro). ás vezes os butões colam na posição em baixo as pilhas foram compradas á pouco(talvez 3 meses). algumas vezes funciona e outras não.
  21. misterjohn: prefiro evitar de gastar 150€ Isadora Ferraz: https://onedrive.live.com/?id=C3EF456E15C8DEB6!1283&cid=C3EF456E15C8DEB6&group=0&parId=C3EF456E15C8DEB6!197&o=OneUp a imagem nao é das melhores, mas consigo ver\identificar as posições dos interruptores. penso que sao pulsadores: http://www.mixtronica.com/electronica-componentes-electronicos-interruptores-pulsador/3700-pulsador-smd-para-comandos-auto-swd4.htmlmas nao tenho a certeza ao clicar nos butões, o led pisca, mas não envia o sinal na maior parte das vezes
  22. eu tenho 1 comando. na placa de circuito tenho varios componentes, mas como os posso identificar? preciso de trocar 2 interruptores de 4 pinos, mas nao sei as caracteristicas deles alguem me pode explicar como posso identificar? eu nao consegui encontrar o esquema electrico da placa é 1 comando de 1 carro seat cordoba de 96: siemens swk4 790/97/98
  23. ok... para meter o control transparente eu tenho de retornar TRUE no WM_ERASEBKGROUNG. mas como estava-me a dar flickers, eu tenho de usar o estilo WS_CLIPCHILDREN no parente. mas porquê o controlo nao é limpo antes da mensagem WM_PAINT?(ou seja o retorno TRUE no WM_ERASEBKGROUNG, fica sem efeito)
  24. boa a tarde a todos. eu tenho 1 class Timer e 1 class image. e funcionam bem. mas noto 1 erro estranho e nao entendo o que se passa a animaçao é feita normalmente(tambem uso ownerdraw nos butoes). mas apos 2 minutos(ou 3) as animaçoes param e fico sem acesso aos menus e aos controlos. nao entendo nd alguem me pode ajudar a identificar o problema? eu no parente faço: case WM_DRAWITEM: { SetWindowText(WindowMain,to_string(GetLastError()).c_str()); DRAWITEMSTRUCT *test=(DRAWITEMSTRUCT*) lParam; /*if(test->CtlType==ODT_MENU) { MENUITEMINFO menuInfo; menuInfo.cbSize = sizeof(MENUITEMINFO); menuInfo.fMask=MIIM_DATA; if(GetMenuItemInfo((HMENU)test->hwndItem,(UINT) test->itemID, TRUE, &menuInfo )!=0) { Menu *mMenu = (Menu *) menuInfo.dwItemData; if(mMenu!=NULL) if(mMenu->DrawItem!=NULL) //mMenu->DrawItem(); else { } } } else { if(test->hwndItem!=inst->hwnd) SendMessage(test->hwndItem, WM_DRAWITEM, wParam, lParam); }*/ if(test->CtlType==ODT_BUTTON) SendMessage(test->hwndItem, WM_DRAWITEM, wParam, lParam); //return TRUE; } break; os butoes sao ownerdrawed normalmente. ate 2 ou 3 minutos. o erro que obtenho é(GetLastError()) 6 - handle invalido. como posso testar, nesta 'message', se o handle é valido ou nao? (nao sei se o erro é mesmo aqui, mas como tudo pára e pode nao mostrar nd)

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!