|
Tomasz,
I've already tried that but it has led me nowhere. If you use spy++ on it there is nothing there. It recieves no messages, has no window, etc. The creation for each of the six windows is the same except for the coordinates and a different id. I do not understand why it would stop working after the 3rd instance of that CPanel class.
I stepped through the Creation of the window and everyhting seems normal.It is a window and has a valid handle. Its just when the windows finally get painted there is nothing there.
I am really lost here.....but thank you.
Nice screensaver BTW
Regards,
Eric
"DWORD my man!"
|
|
|
|
|
I need a handler that knows when the mouse is over the button, so it can perform a statement.
Thank you for your Help
Santiago Suarez
|
|
|
|
|
Maybe try to use classwizard to associate WM_MOUSEMOVE with metod:
void OnMouseMove(...)
|
|
|
|
|
I did what you told me but it performs the statement is in the window not in the button, which is what i need.
Please help me clarify this problem.
SSR
|
|
|
|
|
hi,
i get the following error when i use LineDDA ,
C:\WINDOWS\Desktop\Edge\EdgeView.cpp(105) : error C2440: 'type cast' : cannot convert from '' to 'void (__stdcall *)(int,int,long)'
None of the functions with this name in scope match the target type
void CEdgeView::OnDraw(CDC* pDC)
{
CEdgeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//ptr is declared in my codes, but i didn't paste it here
::LineDDA(m_PCenter.x, m_PCenter.y, ptr->Coord.x, ptr->Coord.y,
(LINEDDAPROC)LineDDAProc, (long)pDoc);
}
void CEdgeView::LineDDAProc(int X, int Y, LPARAM lpData)
{
CDC* pDC;
pDC = (CDC*) lpData;
pDC->SetPixel(CPoint(X,Y), RGB(0,0,255));
}
does anyone know how can i fix the error?
Thanks
Ehsan
Ehsan Behboudi
|
|
|
|
|
The callback can't be a non-static class member. It should look like this:
void CALLBACK MyLineDDAProc(int X, int Y, LPARAM lpData)
{
CDC* pDC = (CDC*) lpData;
pDC->SetPixel(CPoint(X,Y), RGB(0,0,255));
}
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
It also must be static in the header.
|
|
|
|
|
Does anyone have a REALLY fast grayscaling algorithm in their toolbox? (Monochrome to grayscale) I've got one that works well enough when displaying a single grayscaled thumbnail, but we are now displaying several at a time in two separate views and speed has become a critical factor. I'm working on improving the one I've got, but thought if anyone out there has one they would share, or point me towards where I can find one, it would save me some work. Thanks.
|
|
|
|
|
Use Miscellany/Adverise section for that. This forum is not a place for promoting commercial programs.
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
ihave an h - file with all my struct definitions. unfortunatly i need to include it in several other header files because these structs are used as arguments in the functions. now i always get an error because the compiler claims the structs to be defined more then one time.
is there any way to avoid this by defining a max recursion depth or similar ? thanks
|
|
|
|
|
You should use preprocessor symbols to avoid multiple inclusions.
#ifndef __FOO_H
#define __FOO_H
struct Foo
{
};
#endif
Note that each .h file should have its own symbol - for foo.h use __FOO_H, and for bar.h __BAR_H.
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
yessss it works - finally thanx you saved my day (hehe, i always wanted to what these #ifndef stuff is good for at all)
|
|
|
|
|
Thomasz's suggestion is correct, but I thought I'd mention another - if you use precompiled headers, it can be a good idea to include a file like this ( full of structs you will be using, etc ) in your stdafx file.
Christian
#include "std_disclaimer.h"
People who love sausage and respect the law should never watch either one being made.
The things that come to those who wait are usually the things left by those who got there first.
|
|
|
|
|
Hi,
In your file.h, you should put a condition that if the header file has already been " include " in another file, the compiler will not had it another time. Use the #if !defined and #define instructions. Se the example:
//File : StringTool.h
#if !defined(_STRINGTOOL_) //Normally the name of your file with _ in front and at the end.
#define _STRINGTOOL_
//Between the #define and #endif, put your .h file
#endif // _STRINGTOOL_
Jean-François Roberge
|
|
|
|
|
Hi,
In your file.h, you should put a condition that if the header file has already been " include " in another file, the compiler will not had it another time. Use the #if !defined and #define instructions. Se the example:
//File : StringTool.h
#if !defined(_STRINGTOOL_) //Normally the name of your file with _ in front and at the end.
#define _STRINGTOOL_
//Between the #define and #endif, put your .h file
#endif // _STRINGTOOL_
Jean-François Roberge
|
|
|
|
|
Hi,
In your file.h, you should put a condition that if the header file has already been " include " in another file, the compiler will not had it another time. Use the #if !defined and #define instructions. Se the example:
//File : StringTool.h
#if !defined(_STRINGTOOL_) //Normally the name of your file with _ in front and at the end.
#define _STRINGTOOL_
//Between the #define and #endif, put your .h file
#endif // _STRINGTOOL_
|
|
|
|
|
Hi,
In your file.h, you should put a condition that if the header file has already been " include " in another file, the compiler will not had it another time. Use the #if !defined and #define instructions. Se the example:
//File : StringTool.h
#if !defined(_STRINGTOOL_) //Normally the name of your file with _ in front and at the end.
#define _STRINGTOOL_
//Between the #define and #endif, put your .h file
#endif // _STRINGTOOL_
Jean-François Roberge
|
|
|
|
|
Hi,
In your file.h, you should put a condition that if the header file has already been " include " in another file, the compiler will not had it another time. Use the #if !defined and #define instructions. Se the example:
//File : StringTool.h
#if !defined(_STRINGTOOL_) //Normally the name of your file with _ in front and at the end.
#define _STRINGTOOL_
//Between the #define and #endif, put your .h file
#endif // _STRINGTOOL_
Jean-François Roberge
|
|
|
|
|
Hi,
I am developing an OpenGL application using MFC. I have a requirement that I need to redraw the whole scene every 100 millisecs. when I do this using windows timers and invalidating the client area each time, the CPU usage is 100%. The result is that the app cannot process any other messages like, keyboard, mouse etc. Can anyone help me in making this efficient.
Thanks,
Krishnan
|
|
|
|
|
Does your scene change every 100 msecs?
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
Well, not whole of the scene, but some disjoint parts of the scene change. Currently, I redraw the whole picture. Is there any way to restrict drawing of only those parts which change and leaving the unchanged part intact?
Thanks,
Krishnan
|
|
|
|
|
> Is there any way to restrict drawing of only those parts
> which change and leaving the unchanged part intact?
Honestly, I don't know. But I think you need to move your rendering code to separate thread to make app UI responsive. I'd render to a bitmap and then blt results to the screen. Of course, you'll have to use some synchronization stuff (critical sections).
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
I have done some performance tests on my app. They show that the time to actually issue OpenGL commands is more than the time to swap the buffers. as far as multithreading is concerned, I don't think that the CPU load would decrease by that.
|
|
|
|
|
: as far as multithreading is concerned, I don't think that
: the CPU load would decrease by that.
Multithreading is not going to reduce CPU load. Moving the rendering code to second thread will make your application *more responsive* - users will be able to more easily select options from the menu, resize the window or exit the program.
Tomasz Sowinski -- http://www.shooltz.com.pl
|
|
|
|
|
Hi,
Having the advantage of using MFC, you could do any of the followings:
1/ The best is to create a separate thread to do that particular job for you while the application is idle.
2/ The other option is to have the message pump method.
3/ Last but not least, is to put your anmation code in the OnIdle method of the application class. Override the OnIdle and try your code lines there.
Hope these helped.
Cheers!
|
|
|
|