Why is this named with the same name as of the structure?
Because that is a pointer variable, which points to another similar structure (or may point to NULL if it is the last node). I suggest that you take a look at the Wikipedia Entry[^], which illustrates this with a diagrams (that must help you understand it better).
Look at LayeredWindows[^] for starters. The only way i can think of to connect this with OpenGL is to render your graphic into a bitmap with OpenGL and then use this bitmap to update your layered window. Hope this helps something.
> The problem with computers is that they do what you tell them to do and not what you want them to do. < > Sometimes you just have to hate coding to do it well. <
(Question 1): How do you obtain the data contained in the various CPropertyPage(s) that the CPropertySheet loaded by the AddPage() function?
(Question 2): How do you find out which page the User is presently on? Ex: how do I find out when all the data has been entered?, so I can collect the data entered(once I find out how to get the data from the CPropertyPage(s))
A C++ programming language novice, but striving to learn
1) CPropertySheet::GetPage(int index) will return a pointer to a CPropertyPage object, which can be cast to a specific CPropertyPage derived class pointer; e.g., CMyPage* page = (CMyPage*)MySheet->GetPage(0);.
2) Likewise, CPropertySheet::GetActivePage()will return a CPropertyPage pointer to the active page. There's also a GetActiveIndex() which returns the integer index of the active page.
In a Standard dialog you have a CWnd object in it's constructor, the "CBCGPPropertySheet" constructor does not. (see constructor below
"CPropSheet(CBCGPPropertySheet::PropSheetLook look,UINT uiIconsResID = 0, int cxIcon = 0);"
If it had an CWnd object I could easily pass that to the propertypage, How could I obtain the CWnd of the "CBCGPPropertySheet" so I can use it for the propertypage could load inline functions in the CBCGPPropertySheet object?(see inlines below
I'm trying to write a program that will use ETW, but I'm feeling completely baffled by it. I've read as much documentation as I can find, I've tried looking for samples, and I've been Googling for two weeks. I don't understand much of what I read, and I have no idea how to apply what I do understand.
I think I'd understand it better if I had a very bare bones C/C++ program that used it. What I had in mind was a program that waits for one minute, and then couts the total amount of disk activity that occurred in that minute, as measured by ETW.
Thanks for that link. I did see that page before, but somehow I never noticed Using Events to Calculate CPU Usage [^] in that reference until just now, which is pretty much exactly what I thought would help.
So I got that code, and I'm trying to run it, but I don't quite understand how it's supposed to work. I made an .etl file using xperf, which contains some data on CPU sampling. And I altered the code so that LOGFILE_PATH points to that file.
Now, what it seems like it's doing is it calls ProcessEvent many times, but each time, in order for something useful to happen, IsEqualGUID(CpuUsageEvent, pEvent->Header.Guid) must return true. CpuUsageEvent is a static const, generated using VS2K8 tools. But pEvent->Header.GuidHeader.Guid seems to always return a value from a fixed set of possible GUIDs. These NEVER match the generated CpuUsageEvent, so ProcessEvent never does anything useful.
What am I doing wrong here?
Also, does ETW *have* to read from a log file? Maybe I don't know what I'm talking about, but it seems like being able to capture events and save them directly to a struct or object would be a lot more useful than dumping the data to a log and then immediately parse it afterwards.