|
xzing wrote: I am trying to create a help file for my program. I wrote a pdf with pictures and text describing how my program works and I wanted to put a button called "help" on my dialog that would open the pdf. But doing this seems quite hard, could someone help me do this? I have tried just opening a blank dialog and adding Static Text but quite frankly I think that looks like crap. Maybe I am approaching the problem from the wrong angle. Is there some easier way to do this? Any help would be appreciated.
If you already have a PDF with help information, you could just open the PDF file with ShellExecute and that'll open the PDF file in an external PDF viewer the same as a Windows help file would be opened in an external viewer.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I want to know how I can write text with backspace in a transparent window.
I am using this code but it does not work.
#include <afxwin.h>
//////////////////////////////////////////////////////////////////////////
// CMyFrameWnd
class CMyFrameWnd : public CFrameWnd
{
public:
CMyFrameWnd();
protected:
CString m_Text;
//{{AFX_MSG(CMyFrameWnd)
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnPaint();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
//{{AFX_MSG_MAP(CMyFrameWnd)
ON_WM_CHAR()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CMyFrameWnd::CMyFrameWnd()
{
//Transparent window
CString strMyClass=AfxRegisterWndClass( NULL, NULL, (HBRUSH) NULL);
Create(strMyClass, _T("Frame Window"));
}
void CMyFrameWnd::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
m_Text += nChar;
if (nChar == VK_BACK)
{
m_Text = m_Text.Left(m_Text.GetLength() - 2);
TRACE("\n%s", m_Text);
}
Invalidate();
}
void CMyFrameWnd::OnPaint()
{
CPaintDC dc (this);
dc.TextOut(0,0,m_Text);
}
//////////////////////////////////////////////////////////////////////////
class CMyApp : public CWinApp
{
public:
CMyApp(){};
virtual BOOL InitInstance();
};
BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyFrameWnd();
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CMyApp myApp;
If I use a normal window changing:
CString strMyClass=AfxRegisterWndClass( NULL, NULL, (HBRUSH) NULL);
Create(strMyClass, _T("Frame Window"));
to
Create(NULL, _T("Frame Window"));
backspace work well
Can you give me any idea
Thanks
|
|
|
|
|
It is working - it's just that with a NULL brush, the Invalidate call won't erase the characters you're backspacing over, as it paints over them with transparency.
Try entering the following text in the window - abc<backspace>d - you'll end up with abd after that, which shows that the backspace is being recognised.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi Mr. Dootson:
Yes, I can see m_text contains "abc" after bakcspace but my transparent window shows "abcd". I need erase text or backspace draw in my transparent window. How can I do that? Do you have any idea?.
Thanks
|
|
|
|
|
Weird - the window displayed "abd" when I did that - and I used the same code as you - well, the only difference is how I created the window. I put your window class registration code in the PreCreateWindow method of my view:
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass=AfxRegisterWndClass( NULL, NULL, (HBRUSH) NULL);
return TRUE;
}
This method is called from within the CWnd::Create method, so should do much the same as your code?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi Mr.Dootson:
I had added
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyFrameWnd)
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
in my Class declarations and your PreCreateWindow code as
BOOL CMyFrameWnd::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass=AfxRegisterWndClass( NULL, NULL, (HBRUSH) NULL);
return TRUE;
}
How I have to change Create? I used:
Create(NULL, _T("Frame Window")) but it doesn't works.
I get and ASSERT in wincore.cpp Line:722
and there is not any text in my window. What >I am doing wrong?
Thanks
|
|
|
|
|
gcorrea wrote: How I have to change Create?
I don't call Create at all - the view window's created by my CMainFrame class, which in turn is created within my application classes InitInstance method.
So, slightly different class structure to yours.
In your app's InitInstance method, changing
m_pMainWnd = new CMyFrameWnd();
to
m_pMainWnd = new CMyFrameWnd();
m_pMainWnd->Create();
could probably work
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
When I do that I get error C2660: 'Create' : function does not take 0 parameters
|
|
|
|
|
So add in the necessary parameters!
My MainFrame class uses these parameters to create the view:
m_wndView.Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(0, 0, 0, 0), this, 0xE900, NULL);
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Doing that I get: error C2664: 'Create' : cannot convert parameter 6 from 'const int' to 'const char *'
This is referring to 0xE900.
Do you think it is possible to send me your code to gcorrea@cguelectronics.com in order to evaluate?
Thanks
|
|
|
|
|
Again the different class thing gets in the way. How about you read the documentation for your frame window vs. CWnd - that'll show you how the parameters fit in.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I had used differents parameters and ones don not compile, give me errors, others ones compile but give assertion failure but any works.
Could you Mr. Dootson attach your working code zipped to compare what I am doing wrong?
|
|
|
|
|
Thanks everybody. I had solved my problem
|
|
|
|
|
in Edit Control I Want to Add some charactor behind the cursor
How i get the Cursor;
thank you for help
|
|
|
|
|
|
I am trying to build an application which lets me view/copy files from an ipod classic without using itunes but i don't really know where to begin communicating with the ipod. I would be grateful if anyone could point me in the direction of a good library or some good info to help me write my own. I am looking to write the progam in C++ using borland builder.
thanks for the help
|
|
|
|
|
|
You might be able to find source code for EphPod, which views/copies files and music on an iPod without iTunes
|
|
|
|
|
Hi
I'm trying to get duplex pipes working. I can send from the client to the server but
not from the server to the client.
The reason is both the client and server need a read monitoring thread to check for
messages against the same file.
How do i do this without getting lockouts ? I can't use mutexes as neither the client
or server knows who's going to message next and when ! !
|
|
|
|
|
I have a feeling that pipes if you are decoupling the reading from the writing in the client, you'll need two instances of the pipe, one for the reader to connect to and one for the writer to connect to. This makes things difficult, as the server won't know if it's connected to a reader or writer unless you apply some protocol so the client tells the server pipe if it's connected to a reader or writer.
So - why do I think this? Well, if the client read and write functions are decoupled (i.e. in different threads), the writer and reader both need to open a pipe handle, as you can't be trying to read from and write to the same handle at the same time. However, each time you open a handle on a pipe, you need a pipe instance (created with CreateNamedPipe) on the server to service that connection.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Is your display name taken from the ZX Spectrum game of same name?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
I think you're right. at present i've 2 threads using the same file handle.
after reading 'duplex' i thought it would work, but for what i want to do i
guess the only solution is to set up 2 pipes and 2 file names.
...and yes Hungry Horace is from the Spectrum game - the golden age of PC games !
|
|
|
|
|
HungryHorace wrote: after reading 'duplex' i thought it would work, but for what i want to do i
guess the only solution is to set up 2 pipes and 2 file names.
You should be able to do it with a single pipe - but allow multiple instances. Then you can open two instances in the server (one for reading, one for writing) and open a reading file handle and a writing file handle (both opening the same pipe name) in the client. The only issue then is coordinating all those end-points!
HungryHorace wrote: Hungry Horace
First computer game I ever played
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi,
I have to do some work with TCP/IP was Looking at MFC presentation of this.
One was The CAsyncSocket Class
I was lookig at a article one this and it mseems the Class Wizard gearates a
pointer to a Cdialog object
Why??? seems the notifications come from the Server/Client come by way of
Window messages
isn't this a bit of overhead as far as perfomance (would thought MicroSoft would issue
notification via a CEvent Class )
Does anyone have experince with performance regarding CAsyncSocket vs
WinSock
Thankx
|
|
|
|
|