|
Does anyone know about a decent standalone c-cpp pre-processor (preferably with source code), written in c or cpp.
LateNightsInNewry
|
|
|
|
|
|
If you are not looking for source code, but want to see how pre processing takes place , the /E option of Microsoft c/c++ (cl.exe) compiler will generate preprocessed output.
|
|
|
|
|
Check out Boost's Wave library here[^].
Steve
|
|
|
|
|
I am using an instance of the CMonthCalCtrl class. However when I executed the application and click on the a specific date, the date disappears and in some cases half of a rectangled border develope around the normally oval blue date. When I use the CDateTimeCtrl class (with the calendar functionality) this does not happen.
I believe this is simply a redraw error because when I click forward a month the selected date redraws properly.
Any ideas?
I am using Visual Studio 2003 and I am running XP Multimedia. I am using a digital widescreen flat panel display (24") which occaisionally has problems properly rendering borders on objects on web pages.
-- modified at 19:45 Saturday 5th August, 2006
When I rotate my monitor 90 degrees the control renders properly (as do the webpages that exhibit the rendering problem mentioned above).
|
|
|
|
|
The fact that things change when you move the monitor indicates that you have a 'brown' connection somewhere. This has absolutely nothing to do with programming,(unless if you in moving the screen inadvertely move the mouse, touch the keyboard, or, if you have a touch screen, when moving the monitor).
In that case, be more carefull, and debug the appropriate input!
Otherwise,You are in the wrong forum for this type of problem, but, as free advice (for once) I offer the following:-
Place your system, (Desk and all), in the middle of the room!
Get your System up and running, and gently move the Cables around one by one, without disturbing the other cables.
Start with the Powe Cables, and Plugs. Differentiate between the Plug and the cable!
Put Tension on each cable. When the system dies, you found a 'brown' circuit!
Replace the Cable, If the problem persists, it is either the Connector protruding from the equipment, or the inner hardware soldered to the connector.
If the problem has gone, it probably was the Lead! THROW IT OUT! (If you keep it in the garage, just foor keeps, you may be on to this bulletin board again with the same problem, stating that you tried the above with a flex you had in the garage, and you cannot find the problem!
LateNightsInNewry
|
|
|
|
|
Hey
I am trying to use SetWindowHookEx() API to inject my code into another process, but I am kinda lost with the hook procedure that should be placed in the .dll file
is there an explaination about how to build a hook procedure?
thanks in advance!
|
|
|
|
|
See these CP articles:/ravi
|
|
|
|
|
|
thank you for the usefull links, and this is my first try:
this is my callback function
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)<br />
{<br />
if (nCode<0)<br />
return CallNextHookEx(0,nCode,wParam,lParam);<br />
if (wParam == WM_RBUTTONDOWN)<br />
{<br />
MessageBox(GetForegroundWindow(), "Yes", "Works", MB_OK);<br />
} <br />
return CallNextHookEx(0,nCode,wParam,lParam);<br />
}
and in onbutton function I set:
<br />
HOOKPROC wlm;<br />
HHOOK check;<br />
HINSTANCE WLMDLL;<br />
<br />
WLMDLL = LoadLibrary((LPCTSTR) "MyHook.dll");<br />
wlm = (HOOKPROC)GetProcAddress(WLMDLL, "MouseProc");<br />
<br />
check = SetWindowsHookEx(WH_MOUSE,wlm,WLMDLL,0);<br />
as you can see I am trying to do a mouse hook, this try is to get any right click, but later when I get it to work, I want it to be for a defined application that when it gets right click the the popup pops up
can you see what I am doing wrong in my code?
thanks in advance!
|) () |) '/
|
|
|
|
|
I am trying to inherit from a class template (CGenericList) in the constructor, however the compiler is returning:
SentenceList.cpp(6): error C2512: 'CGenericList' : no appropriate default constructor available
SentenceList.cpp
CSentenceList::CSentenceList(char strFileToRead[MAX_SENTENCE_LENGTH], bool bSorted)
: CGenericList()
...
GenericList.h
#pragma once
#include "GenericNode.h"
#include <iostream>
using namespace std;
template<class T>
class CGenericList
{...}
Jon
|
|
|
|
|
|
That's not entirely true. You can derive a new template from a template.
--
As Foretold by Nostradamus
|
|
|
|
|
You can do this:
template <class T> class Bob<T> : public vector<T>
or this:
class Bobby : public vector<int>
but not this:
class Bobbie : public vector
vector all by itself isn't a class.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Initially I couldn't see anything hinting that he wants to create a class, but now that I look at it again, he does mention .cpp files. I assumed that he was writing a new template derived from the old one.
--
Please rise for the Futurama theme song
|
|
|
|
|
|
None of CGenericList's constructors accept zero arguments.
--
Not Y3K Compliant
|
|
|
|
|
If CGenericList looks like this:
template <typename T>
class CGenericList
{
...
CGenericList(int x) { ... }
...
} then your deriving class constructor needs to pass an argument to CGenericList::CGenericList like this:
CSentenceList::CSentenceList(char strFileToRead[MAX_SENTENCE_LENGTH], bool bSorted)
: CGenericList( <<VALUE>> )
--
Broadcast simultaneously one year in the future
|
|
|
|
|
The constructor takes no parameters, is that what u mean?
GenericList.h
template<class T>
class CGenericList
{
public:
CGenericList(void)
{
m_pFirst = NULL;
m_pLast = NULL;
m_iCount = 0;
}
...
CSentenceList.h
class CSentenceList : CGenericList<char*>
{
public:
//Methods
CSentenceList(char strFileToRead[MAX_SENTENCE_LENGTH], bool bSorted = false);
virtual ~CSentenceList(void);
void sort();
unsigned int search(const char *strSearch);
//Properties
unsigned int Size;
Sentence Sentences;
private:
Sentence* Head;
};
CSentenceList.cpp
CSentenceList::CSentenceList(char strFileToRead[MAX_SENTENCE_LENGTH], bool bSorted)
: CGenericList<char*> ()
{
// initialize
Size = 0;
CGenericList<char*> LinkedList();
// read from file and update the linked list
// if (bSorted==true)
// {sort the list;}
}
...
Jon
-- modified at 12:41 Monday 7th August, 2006
|
|
|
|
|
How can I create a CView as it would be a normal control? The problem is the constructor is private because of the DECLARE_DYNCREATE. I can change that myself, but will that cause the mechanism to break? Did it and I'm getting odd errors. Just wondered if this was the reason.
|
|
|
|
|
I Understand that you want to create an independent CView derrived Class. Cannot be done!(or, Can be done, but not with any comfort). you see, you are jumping into the middle of a very complicated protocol,A View is not an independent window class, it is a view, or "rendering", of an underlaying document! The document is what you store on disk. the View class paints it on the screen.When you start messing with the DYNCREATE Macro, you start messing with underlying structures which connect the underlying file to the view. That mechanism is also a link in the chain which enables you to paste a section of what you see in a view into say an excell sheet.(however, in order to do so, far more code is needed)
The Document and the View are parts of a complicated suite of software which you got free with the compiler, it is called the MFC Framework, and you cannot in general change something in the middle, without affecting the whole. As Soon as you try, you get these strange errors.In General you have two options, Work with MFC, and follow its rules. This means in this case that you get things done in a view by making changes in the underlying document, and notify the view that things have changed. Just follow the scribble tutorial ( And DO SO, even if you have 10 years experience) to see how that's done!
Writing for MFC is not easy,things often must be done "the long way around", but there are benefits to be gained. If you follow the rules, an upgrade to the next window release, generally involves only recompilation. Also any advances in MFC will add functionality to your prrogram by no other means than your customers installing the Next service pack for their operating system.
The alternative is to roll your own! Derrive a Main Frame Class window from CMainFrame, and a Child Window from class CChildFrame, and paint your info by hand as required. Somethimes this is the right way to go! But, if you are trying to paint your own data in a View window, See Scribble
LateNightsInNewry
|
|
|
|
|
I've created a structure that looks like this:
CMainForm
--CMainView : CView
----CTabCtrl
------CViewportFull : CViewport
------CViewportMulti : CFrameWnd
--------CSplitterWnd
----------CViewport : CView
----------CViewport : CView
----------CViewport : CView
----------CViewport : CView
When the program exits I get this error in my output:
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
Warning: Creating a pane with no CDocument.
HEAP[SDIDOCVIEW-nd.exe]: Invalid Address specified to RtlValidateHeap( 003B0000, 013EEFD8 )
Windows has triggered a breakpoint in SDIDOCVIEW-nd.exe.
This may be due to a corruption of the heap, and indicates a bug in SDIDOCVIEW-nd.exe or any of the DLLs it has loaded.
The output window may have more diagnostic information
Why is this? I can post code if you tell me to :P
When i comment away the multi viewport control it doesn't crash...
-- modified at 12:56 Saturday 5th August, 2006
|
|
|
|
|
Maybe this code is important:
BOOL CMultiViewportWnd::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
CFrameWnd::OnCreateClient(lpcs, pContext);
VERIFY(m_splitterWnd.CreateStatic(this, 2, 2));
VERIFY(m_splitterWnd.CreateView(0, 0, RUNTIME_CLASS(CViewport), CSize(100, 100), pContext));
VERIFY(m_splitterWnd.CreateView(1, 0, RUNTIME_CLASS(CViewport), CSize(100, 100), pContext));
VERIFY(m_splitterWnd.CreateView(0, 1, RUNTIME_CLASS(CViewport), CSize(100, 100), pContext));
VERIFY(m_splitterWnd.CreateView(1, 1, RUNTIME_CLASS(CViewport), CSize(100, 100), pContext));
m_splitterCreated = true;
return TRUE;
}
|
|
|
|
|
You are trying in your code to create CView Windows! The way of creating a New View is use:
CDocTemplate::CreateNewFrame
virtual CFrameWnd* CreateNewFrame( CDocument* pDoc, CFrameWnd* pOther );
Goto Scribble to see how
The Document and the View are parts of a complicated suite of software which you got free with the compiler, it is called the MFC Framework, and you cannot in general change something in the middle, without affecting the whole.
Work with MFC, and follow its rules. This means in this case that you get things done in a view by making changes in the underlying document, and notify the view that things have changed. Just follow the scribble tutorial ( And DO SO, even if you have 10 years experience) to see how that's done!
Writing for MFC is not easy,things often must be done "the long way around", but there are benefits to be gained. If you follow the rules, an upgrade to the next window release, generally involves only recompilation. Also any advances in MFC will add functionality to your prrogram by no other means than your customers installing the Next service pack for their operating system.
The alternative is to roll your own! Derrive a Main Frame Class window from CMainFrame, and a Child Window from class CChildFrame, and paint your info by hand as required. Somethimes this is the right way to go! But, if you are trying to paint your own data in a View window, See Scribble
LateNightsInNewry
LateNightsInNewry
|
|
|
|
|
Hmm but that function won't let me specify what kind of view I want to create! I need to specify what view class I wan't to create since it's not the same as in the doctemplate.
|
|
|
|
|