Hoje vamos ver comopodemos tirar um screenshot usando wxWidgets.Em primeiro lugar vamosver quais as classes que usaremos para isso:O wxWidgets trabalhacom alguns tipos de DC ou Device Context, cada um deles eresponsavel por selecionar um determinado objeto para que possamosdesenhar ou obter informacoes de imagem, um dos Dcs que jaexpliquei por aqui foi o wxPaintDC, com ele, selecionamos um objetoderivado de wxWindow e podemos desenhar nesse objeto, hoje vamos veroutros dois Dcs, o wxScreenDC, que seleciona a tela do Desktop,fazendo com que possamos converte-la em imagem, depois usaremos owxMemoryDC que seleciona um wxBitmap e consegue desenhar no mesmo.Vamos criar uma funcaochamada GetScreenShot que vai nos retornar um wxBitmap:wxBitmap GetScreenShot(){ wxSize mSize = wxGetDisplaySize(); wxBitmap mBmp = wxBitmap(mSize.x, mSize.y); wxMemoryDC mDC(mBmp); wxScreenDC sDC; mDC.Blit(0, 0, mSize.x, mSize.y, &sDC, 0, 0); mDC.SelectObject(wxNullBitmap); return mBmp;}Na linha 1 temos adeclaracao da funcao.Na linha 4 pegamos otamanho do nosso Desktop, incluindo a area do painel, usando afuncao wxGetDisplaySize() que me retornara um wxSize.Na linha 6 criamos umwxBitmap com as dimensoes da nossa Area de Trabalho.ha 8 criamos owxMemoryDC passando como parametro o wxBitmap, ele sera responsavelpor plotar a imagem da Area de Trabalho em nosso bitmap.Na linha 10 criamos owxScreenDC, ele sera responsavel por pegar a imagem da Area deTrabalho, ele fara isso automaticamente.Em 12 temos a partemais complicada da funcao, e quando plotamos a imagem da area detrabalho no bitmap usando a funcao Blit.Os parametros dafuncao Blit que usaremos aqui sao:O primeiro e o segundoparametros sao usados para passar a posicao inicial do bitmaponde queremos desenhar, aqui uso 0 e 0 pois quero que a Area deTrabalho seja plotada iniciando nessas coordenadas.O terceiro e quartoparametros sao a altura e largura que irei usar na plotagem, nocaso o tamanho total da area de trabalho.O quinto parametro eum ponteiro para o DC que quero colar na imagem, no caso owxScreenDC com a imagem da nossa Area de Trabalho.O sexto e o setimoparametros definem a partir de qual ponto do DC que estamos plotandosera iniciado o processo, aqui eu usei 0 e 0 mais uma vez pois queroa area total do mesmo.Na linha 14 removo omBmp do controle do wxMemoryDC.E em 16 finalizoretornando o mBmp na funcao.Vejam que com poucaslinhas conseguimos obter um ScreenShot da nossa area de trabalho.Para testar a funcao:class wxAppSS : public wxApp{ public: virtual bool OnInit(void);};bool wxAppSS::OnInit(void){ wxInitAllImageHandlers(); GetScreenShot().SaveFile(wxT("test.png"), wxBITMAP_TYPE_PNG); return false;}IMPLEMENT_APP(wxAppSS)Resultado Final no Mint/Linux Hoje vamos criar uma funcaosimples para contar o numero de Workbooks abertos na instancia do Excel queestamos trabalhando.Na classe wxAutomationExcelem public digitamos a declaracao da funcao.intwxAutomationExcel::GetWorkbookCount()no arquivo mexcel.cpp suacontrucao.intwxAutomationExcel::GetWorkbookCount(){ const wxVariant workbooksCountV = this->GetProperty(wxT("Workbooks.Count")); if (workbooksCountV.IsNull()) { wxLogError(wxT("Problemas ao executar aoperacao")); return 0; } const long workbooksCount = workbooksCountV; returnworkbooksCount;}Aqui estamos trabalhando maisuma vez com propriedades, no caso, chamamos a propriedade Workbooks.Count, elaretornara um long como resultado, veja que se meu wxVariant for igual a nulo,eu retorno o 0, eu faco assim, pois se existirem Workbooks na instancia, elesera maior que zero.Para testar a funcao:wxAutomationExcel m_excel;//Primeiropegamos a instancia do Excel,//se ela naoexistir eu retorno Nuloif(!m_excel.GetExcelInstance()) return;//Pego o numerode Workbooks abertos...int getWBCount= m_excel.GetWorkbookCount();//Exibo umamensagem com o valor.wxMessageBox(wxString::Format("Numerode Workbooks abertos\n%d", getWBCount));Lembrando que