?
Solved

bitmpas loading..using SetTimer..

Posted on 2000-03-13
7
Medium Priority
?
203 Views
Last Modified: 2013-11-20
hi,
i want to load  10 bitmaps.At the same position these bitmaps should come one after the other ..using SetTimer.it should form a loop.Bitmaps
are displayed full window..
0
Comment
Question by:b_harpal
  • 3
  • 2
  • 2
7 Comments
 
LVL 1

Expert Comment

by:hiap_ho
ID: 2614853
define a timer
#define IDC_TIMER   1000

define a message map
afx_msg void OnTimer(bla bla bla)

then make your function in OnTimer

In your main application use SetTimer(blablabla) <--- to set how long you want to wait before loading the next function.

More detailed explaination could be found in http://devcentral.iftech.com/Learning/tutorials/mfc-win32/vc6mfc/5.asp


0
 

Accepted Solution

by:
krisp earned 120 total points
ID: 2615724
Hi b_harpal,

Say u have a dialog based application,
In the dialog .cpp class, do the following

************************************
 Use the "SetTimer(1, 500, NULL)"
function in the OnInitDialog() function of the dialog.
************************************
*In the OnPaint()function, under the else part of IsIconic()loop, add the following code
HDC hMemDC = ::CreateCompatibleDC(NULL);
      SelectObject(hMemDC, hbitmap);

::StretchBlt(dc.m_hDC, 50, 50, width,  hieght, hMemDC, width1, hieght1, 250,250, SRCCOPY);
//width,hieght,width1,hieght1
//are integers which determines the  
// size of the bitmap shown.
::DeleteDC(hMemDC);
::DeleteObject(hbitmap);


**************************************

In the OnTimer() function, use the following
static int i =1;
if(i == 1)
{
   hbitmap = ::LoadBitmap     (::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
}
else if(i == 2)
 {
     hbitmap = ::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP2));
}      
else if(i == 3)
{
      hbitmap = ::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3));
}
else if(i == 4)
{
      hbitmap = ::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP4));
}
else if(i == 5)
{
      hbitmap = ::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP5));
            i = 1;
}

i++;
this->InvalidateRect(NULL);
*************************************
hbitmap is of type HBITMAP which should be declared as a class variable.
I have done it for 5 bitmaps with resource name ID_BITMAP1...... U can extend it to 10 bitmaps in the OnTimer function.

hope this will answer your question.

Cheers
0
 

Author Comment

by:b_harpal
ID: 2618359
hi Krisp,

  thanks for your answer.But somehow iam still not able to implement it fully.It's giving problems in the OnPaint() function.It would be kind of u if u can give the full code so that i can cross-check it & solve my problem. Your answer helped me solve 95% of my problem..
waiting for reply..

cheers..
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 1

Expert Comment

by:hiap_ho
ID: 2618408
Why don't you try the following code to draw the bitmap. Hope it will help :
width = the width of your screen in pixels
height = the height of your screen in pixels

      CBitmap cbmp;
      cbmp.LoadBitmap(IDB_BITMAP);
      HBITMAP Bmp;
      Bmp=(HBITMAP)cbmp;
      
      BITMAP bm;
      GetObject(Bmp, sizeof(bm), &bm);
      CPaintDC dc(this);
      HDC memdc = CreateCompatibleDC(NULL);
      HBITMAP h = (HBITMAP)SelectObject(memdc, Bmp);
      StrectchBlt(dc,0,0,bm.bmWidth,bm.bmHeight,memdc,0,0,width,height,SRCCOPY);  
      SelectObject(memdc, h);

I don't have any intention to cross krips, just trying to help, krips I hope you don't mind.
0
 

Expert Comment

by:krisp
ID: 2619112
Hi b_harpal,

In the OnPaint() function, I used the following


CPaintDC dc(this);
int width = 150;
int hieght = 150;
int width1 = 0;
int hieght1 = 0;
HDC hMemDC = ::CreateCompatibleDC(NULL);
      SelectObject(hMemDC, hbitmap);
::StretchBlt(dc.m_hDC, 0, 0, width, hieght, hMemDC, width1, hieght1, 250,250, SRCCOPY);
::DeleteDC(hMemDC);
::DeleteObject(hbitmap);

If u want to increase the size, increase the values of width and hieght.

If u still have any problems,please be specific in ur problem(what error u r gettin?)and please do send queries if u have.

cheers.
0
 

Author Comment

by:b_harpal
ID: 2627860
hi krisp,
  ur simply expert..thanks.but i think u can help me much more.
iam making a HP-UX tutor as final year project.so please help me..i had to use animations,sounds..etc.it would be great help and kind of u if u could help me in some way..like providing me some links..hope u reply....if required u can mail me at bharpal@yahoo.com..once again thanks for ur support.

cheers
harpal
0
 

Author Comment

by:b_harpal
ID: 2627893
hi krisp,

this is my first time...i think there's some problem..it is showing 3 pts instead of 30..so please..check it out.
harpal
0

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Introduction: Hints for the grid button.  Nested classes, templated collections.  Squash that darned bug! Continuing from the sixth article about sudoku.   Open the project in visual studio. First we will finish with the SUD_SETVALUE messa…
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
In this video I will demonstrate how to set up Nine, which I now consider the best alternative email app to Touchdown.

589 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question