William.Mendes
Membro Júnior-
Posts
8 -
Cadastrado em
-
Última visita
Reputação
2-
já consegui compilar passando -lgdi32 -lgdi32 nas opções do compilador, apesar de está dando erro para abrir e gravar no arquivo, essa parte de compilação foi ! Obrigado
-
C:\Users\f-wm3668\AppData\Local\Temp\cc5PlFGa.o printscreen7.cpp:(.text+0xf3): undefined reference to `__imp_GetDIBits' C:\Users\f-wm3668\AppData\Local\Temp\cc5PlFGa.o printscreen7.cpp:(.text+0x1ab): undefined reference to `__imp_GetDIBits' c:\program files (x86)\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe C:\Users\f-wm3668\AppData\Local\Temp\cc5PlFGa.o: bad reloc address 0xc in section `.xdata' C:\Users\f-wm3668\Desktop\Exemplos fonts\collect2.exe [Error] ld returned 1 exit status
-
Boa tarde, estou tendo erro para compilar essa aplicação, estou fazendo um printscreen para windows 7 em c++ usando o devcpp mesmo, se alguem já fez e conseguir ajudar agradeço muito, não sei se tem algum parametro para passar na compilação. #include <iostream>#include <windows.h>#include <stdio.h>//// Side Effects:N/A////This code is copyrighted and has// limited warranties.Please see http://// www.Planet-Source-Code.com/vb/scripts/Sh// owCode.asp?txtCodeId=10754&lngWId=3//for details.//**************************************// void TakeScreenShot(char* filename){ keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_SNAPSHOT, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); HBITMAP h; OpenClipboard(NULL); h = (HBITMAP)GetClipboardData(CF_BITMAP); CloseClipboard(); HDC hdc=NULL; FILE *fp=NULL; void *pBuf=NULL; BITMAPINFO bmpInfo; BITMAPFILEHEADER bmpFileHeader; do { hdc=GetDC(NULL); ZeroMemory(&bmpInfo,sizeof(BITMAPINFO)); bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER); GetDIBits(hdc,h,0,0,NULL,&bmpInfo,DIB_RGB_COLORS); if(bmpInfo.bmiHeader.biSizeImage<=0) bmpInfo.bmiHeader.biSizeImage=bmpInfo.bmiHeader.biWidth*abs(bmpInfo.bmiHeader.biHeight)*(bmpInfo.bmiHeader.biBitCount+7)/8; if((pBuf = malloc(bmpInfo.bmiHeader.biSizeImage))==NULL) { MessageBox( NULL, "Unable to Allocate Bitmap Memory", "Error", MB_OK|MB_ICONERROR); break; } bmpInfo.bmiHeader.biCompression=BI_RGB; GetDIBits(hdc,h,0,bmpInfo.bmiHeader.biHeight,pBuf, &bmpInfo, DIB_RGB_COLORS); if((fp = fopen(filename,"wb"))==NULL) { MessageBox( NULL, "Unable to Create Bitmap File", "Error", MB_OK|MB_ICONERROR); break; } bmpFileHeader.bfReserved1=0; bmpFileHeader.bfReserved2=0; bmpFileHeader.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+bmpInfo.bmiHeader.biSizeImage; bmpFileHeader.bfType=0x4D42; bmpFileHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); fwrite(&bmpFileHeader,sizeof(BITMAPFILEHEADER),1,fp); fwrite(&bmpInfo.bmiHeader,sizeof(BITMAPINFOHEADER),1,fp); fwrite(pBuf,bmpInfo.bmiHeader.biSizeImage,1,fp); } while(!false); if(hdc) ReleaseDC(NULL,hdc); if(pBuf) free(pBuf); if(fp) fclose(fp);}; int main(){ char file[20]="c:\\Screenshot.bmp"; TakeScreenShot(file); return 0;}
-
Duvida de Ponteiro para funcao que recebe funcao
William.Mendes respondeu ao tópico de William.Mendes em C/C#/C++
//bom pode ajudar mais pessoas, esse exemplo que montei ficou bem claro como usar função para ponteiro #include <stdio.h>void func1(){ printf("run func1()\n");};void func2(){ printf("run func2()\n");};void func3(void (*func)()){ printf("run func3()\n"); func();};void func4(void (*f1)(void (*)()),void (*f2)()){ printf("run func4()\n"); f1(f2);};void func5( void (*f1)(void (*)()), void (*f2)(), void (*f3)()){ printf("run func5()\n"); f1(f2); f1(f3);};int main(){ //declaracao, ponteiro para funcao void (*funcao1)(); void (*funcao2)(); void (*funcao3)(void (*)()); void (*funcao4)(void (*)(void (*)()),void (*)()); void (*funcao5)(void (*)(void (*)()),void (*)(),void (*)()); //apontamento funcao1 = func1; //ou funcao1 = (void(*)())func1; funcao2 = func2; funcao3=func3; funcao4=func4; funcao5=func5; //exibir por funcao func1(); func2(); func3(func1); func3(func2); func4(func3,func1); func4(func3,func2); func5(func3,func1,func2); //exibir por ponteiro funcao1(); funcao2(); funcao3(func1); funcao3(func2); funcao4(func3,func1); funcao4(func3,func2); funcao5(func3,func1,func2); return 0;} -
Duvida de Ponteiro para funcao que recebe funcao
William.Mendes respondeu ao tópico de William.Mendes em C/C#/C++
valeu pela ajuda consegui resolver o problema e até a fazer de formas diferente !!!, consegui entender perfeitamente como devem ser declarado o prototipo dos ponteiros, e associação no caso das funções que recebem valores, variáveis ou outras funções como parâmetro. Obrigado e segue código de como ficou da forma mais simples. #include <stdio.h>//#include <iostream>#include <string>//using namespace std;void func1(){//cout << "run func1()" << endl;printf("run func1()\n");};void func2(){//cout << "run func2()" << endl;printf("run func2()\n");};void func3(void (*func)()){func();};int number(int *x){return (*x);}int main(){//ponteiro para funcaovoid (*funcao)();void (*funcao2)();//ponteiros para funcao em teste, funcao3 e funcao4 sao ponteiros para funcao que recebe como parametro funcao como ponteiro.//declaração e apontamento estão funcionando, mas chamada da funcao esta com erro.//test function 3, 4 and 5...void (*funcao3)();void (*funcao4)(void(*));void (*funcao5)(void *);void (*funcao6)(void (*)());funcao = (void(*)())func1;funcao();funcao = (void(*)())func2;funcao();funcao2 = func1;funcao2();funcao2 = func2;funcao2();func3(func1);func3(func2);//cout << "em teste:" << endl;printf("em teste:\n");funcao3 = (void(*)())func3;funcao4 = (void(*)(void(*)))func3;funcao5 = (void(*)(void*))func3;funcao6=func3;//error call function//chamadas com erros, uma das duas deveria funcionar//funcao3(func1);//ou//funcao4(func1);//ou//funcao5(func1);funcao6(func1);return 0;} -
Duvida de Ponteiro para funcao que recebe funcao
William.Mendes respondeu ao tópico de William.Mendes em C/C#/C++
O que estou tentando fazer é um ponteiro para func3 dentro do main, como pode ver os ponteiros funcao3, funcao4 e funcao5 são tentativas para apontar para func3, apesar das declaração de cada um ser diferente do outro, a declaração e apontamento não apresentam erros, mas ao tentar passar func1 para dentro do ponteiro de func3 da erro ! por isso deixei as linhas que estão dando erro comentadas aqui: //funcao3(func1); //ou //funcao4(func1); //ou //funcao5(func1); como pode ver todas elas estão apontando para func3 como aqui: funcao3 = (void(*)())func3; funcao4 = (void(*)(void(*)))func3; funcao5 = (void(*)(void*))func3; mas nenhuma das tentativas deu certo para chamar a execução da função passando func1 como parâmetro. chamando func3 diretamente passando func1 como parâmetro funciona normalmente, mas ao tentar fazer um ponteiro para func3 e passar func1 para dentro dele não funciona, sei que é possível só não consegui acertar na sintaxe, não sei se estou errando na declaração desses ponteiros, no apontamento ou na chamada da função. -
Duvida de Ponteiro para funcao que recebe funcao
William.Mendes respondeu ao tópico de William.Mendes em C/C#/C++
Boa tarde Mauro, tentei aplicar mas não consegui, até usando como base C se consegui me ajudar vou passar o mesmo código em C, esse problema não é relacionado a C++, ele vem da linguagem base C mesmo, na verdade não é nem problema da linguagem e sim da minha lógica para aplicar a solução, mas fico grato pela ajuda. Obrigado //em C#include <stdio.h>//#include <iostream>#include <string>//using namespace std;void func1(){ //cout << "run func1()" << endl; printf("run func1()\n");};void func2(){ //cout << "run func2()" << endl; printf("run func2()\n");};void func3(void (*func)()){ func();};int number(int *x){ return (*x);}int main(){ //ponteiro para funcao void (*funcao)(); void (*funcao2)(); //ponteiros para funcao em teste, funcao3 e funcao4 sao ponteiros para funcao que recebe como parametro funcao como ponteiro. //declaração e apontamento estão funcionando, mas chamada da funcao esta com erro. //test function 3, 4 and 5... void (*funcao3)(); void (*funcao4)(void(*)); void (*funcao5)(void *); funcao = (void(*)())func1; funcao(); funcao = (void(*)())func2; funcao(); funcao2 = func1; funcao2(); funcao2 = func2; funcao2(); func3(func1); func3(func2); //cout << "em teste:" << endl; printf("em teste:\n"); funcao3 = (void(*)())func3; funcao4 = (void(*)(void(*)))func3; funcao5 = (void(*)(void*))func3; //error call function //chamadas com erros, uma das duas deveria funcionar //funcao3(func1); //ou //funcao4(func1); //ou //funcao5(func1); return 0;} -
Boa tarde a todos, estou com uma duvida sobre como usar ponteiro para função que recebe função como parâmetro, através do uso de ponteiro. o exemplo pode ser compilado e está funcionando, mas após retirar o comentário da chamada das funções da erro nas linhas: //funcao3(func1); //ou //funcao4(func1); //ou //funcao5(func1); As outras chamadas estão funcionando corretamente, não sei qual das formas seria correta então tentei as 3, mas mesmo assim não funcionou. //c++ #include <iostream>#include <string>using namespace std;void func1(){ cout << "run func1()" << endl; };void func2(){ cout << "run func2()" << endl; };void func3(void (*func)()){ func(); };int number(int *x){ return (*x); }int main(){ //ponteiro para funcao void (*funcao)(); void (*funcao2)(); //ponteiros para funcao em teste, funcao3 e funcao4 sao ponteiros para funcao que recebe como parametro funcao como ponteiro. //declaração e apontamento estão funcionando, mas chamada da funcao esta com erro. //test function 3, 4 and 5... void (*funcao3)(); void (*funcao4)(void(*)); void (*funcao5)(void *); funcao = (void(*)())func1; funcao(); funcao = (void(*)())func2; funcao(); funcao2 = func1; funcao2(); funcao2 = func2; funcao2(); func3(func1); func3(func2); cout << "em teste:" << endl; funcao3 = (void(*)())func3; funcao4 = (void(*)(void(*)))func3; funcao5 = (void(*)(void*))func3; //error call function //chamadas com erros, uma das duas deveria funcionar //funcao3(func1); //ou //funcao4(func1); //ou //funcao5(func1); return 0;}
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