|
|
u will also find the function outportb() and inportb(); a useful one for thiz(just mention the port name "0x378" and the databyte to be sent/to be recieved.....
as said before u can use thiz for the control and status port as well.....
cheerz.....
"faith, hope, love remain, these three.....; but the greatest of these is love" -1 Corinthians 13:13
|
|
|
|
|
Hi, there. It really depends on what kind of interaction you need. If you are using the standard printer protocols like Nibble mode or EPP mode etc, you should use the WIN32 API to read/write from the port. Or if u want to access the raw port registers directly, one good free source is the one provided by beyondlogic. Just google for it , its called INPOUT32.DLL.It has a driver that allows direct access to the parallel port. I hope this will help you.
there's no such thing as a stupid programmer...
|
|
|
|
|
It's a stupid question, I know, but anyway..
Suppose, I have some MDI application with a modeless property sheet. In one of the property pages classes (CInput: public CPropertyPage) I have a public function AddEditBox() (which creates and displays Edit Boxes). I want to call that function on some event, which I handlе in my View class.. what shoul I do?
|
|
|
|
|
Obtain pointer to that property page and call function using it making sure this page is an active one.
If you gave more details as where property sheet exists I could give you a hint on how to obtain that pointer.
JohnCz
|
|
|
|
|
Please, tell me, what's wrong here:
class CInput : public CPropertyPage<br />
{...<br />
void AddEditBox();<br />
...<br />
}<br />
<br />
<br />
void CInput::AddEditBox()<br />
{<br />
<br />
CRect rect( 8, 25, 28, 45 );<br />
int ID = 4000;<br />
<br />
CEdit *p = new CEdit;<br />
<br />
p->Create( WS_CHILD | WS_VISIBLE | WS_TABSTOP |<br />
ES_AUTOHSCROLL | WS_BORDER | WS_DISABLED, rect, this, ID );<br />
<br />
}
Now, I want to call this function from my View class (on WM_LBUTTONUP event)
void CMyView::OnLButtonUp(UINT nFlags, CPoint point) <br />
{<br />
...<br />
CInput inp;<br />
...<br />
inp.AddInputEdit();<br />
...<br />
}
but Create function returns 0..? why? what I did wrong..?
|
|
|
|
|
It imperative that if you post code post all relevant parts.
You are instantiating object of the CInput type.
Your . . . do not allow me to see if you call Create member of the page. Therefore the first thing is that raises question is that you are calling member function (AddInputEdit) that requires valid window handle.
Even if you were successful creating edit control, this page is not a part of property sheet anyway and on the top of it will be destroyed when OnLButtonUp goes out of scope.
You have to obtain pointer to existing page, make sure that window is attached to it and then call AddInputEdit.
Page has no window attaché until is activated.
JohnCz
|
|
|
|
|
Thanks a lot! I've fixed the error like You told me and now everything works properly and I'm very happy about that
|
|
|
|
|
hi guys
i need help on this real bad....
i posted this messege earlier but didnt solve the problem .. will someone plese respond to this .. please...........
I have a MFC application dialog based.. has 2 dialog forms say dialog1 and dialog 2.. in dialog1 i have a picture holder (IDC_HOLDER). what i need to do is get the "Rect" value of that holder from dialog2 .. i can do that from dialog1 with
CRect rc;
GetDlgItem(IDC_HOLDER)->GetWindowRect(rc);
but how to access that from dialog2....
i tried
CDialog1* dlg;<br />
dlg->GetDlgItem(IDC_HOLDER)->GetWindowRect(rc);
doesnot work...
my whole project has come to HALT by this ... please help .. someone !!!!!
thanks
zm
where are all the GURUS???
|
|
|
|
|
|
Does dialog1 open dialog2? If it does, try the following:
1. Give dialog2 a member variable - HWND m_hWnd1;
2. Before dialog1 opens dialog2 use - dialog2.m_hWnd1 = m_hWnd;
Then use:
RECT r;
::GetWindowRect(::GetDlgItem(m_hWnd1, IDC_HOLDER), &r);
|
|
|
|
|
Admission of guilt
This is a shameless ploy to get my fellow CPians help this sleep deprived developer meet yet another (self-imposed) insanely aggressive deadline.
Anyone care to provide the implementation of (or a pointer to) this word wrap method?
void wordWrap
(CString strText,
int nWrap,
CPtrArray& lines);
Example:
CString strText = "The quick brown fox jumps over the lazy dog";
CPtrArray lines;
wordWrap (strText, 17, lines);
ASSERT (lines.GetSize() == 3);
ASSERT (lines[0] == "The quick brown");
ASSERT (lines[1] == "fox jumps over");
ASSERT (lines[2] == "the lazy dog");
Many thanks!
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Best I can do on short notice is this article[^].
Two problems with it.
1) It's in VB, so some translation is needed
2) It pads lines with spaces, so some truncation is needed
I would guess that doing those two is less effort than developing it from scratch!
|
|
|
|
|
Thanks, Graham! I'd come across that one as well as a couple of implementations in Java. PJ Arends rose to the occasion and (not surprisingly) crafted a great solution.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
nWrap is the maximun number of characters in the line?
Does lines have to be CPtrArray, or can it be redeclared as a CStringArray instead?
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it! Honoured as one of The Most Helpful Members of 2004
|
|
|
|
|
void wordWrap (CString strText, int nWrap, CStringArray &lines)
{
int count = 0;
TCHAR *ptr = strText.GetBuffer(strText.GetLength() + 1);
TCHAR *EndofLine = ptr;
TCHAR *StartofLine = ptr;
while (*ptr)
{
while (*ptr && !_istspace(*ptr))
{
ptr = _tcsinc(ptr);
++count;
}
if (count <= nWrap)
EndofLine = ptr;
if (!*ptr || count > nWrap)
{
ptr = EndofLine;
TCHAR temp = *ptr;
*ptr = 0;
lines.Add(StartofLine);
*ptr = temp;
StartofLine = _tcsinc(ptr);
count = -1;
}
if (*ptr)
{
ptr = _tcsinc(ptr);
++count;
}
}
strText.ReleaseBuffer();
}
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it! Honoured as one of The Most Helpful Members of 2004
|
|
|
|
|
PJ Arends wrote:
Honoured as one of The Most Helpful Members of 2004
And well deserved. Thanks, PJ!
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hmm, the algorithm sometimes goes into an infinite loop. I worked out an alternate implementation which seems to work. Time will tell...
void wrap
(CString strString,
int nWrap,
CStringArray& lines)
{
int nStart = 0;
int nEnd = 0;
do {
nEnd = nStart + nWrap;
if (nEnd >= strString.GetLength())
nEnd = strString.GetLength() - 1;
if (nEnd != strString.GetLength() - 1)
while ((nEnd >= 0) && (strString.GetAt (nEnd) != _T(' ')))
nEnd--;
CString strNextLine;
if ((nEnd - nStart) > 0) {
strNextLine = strString.Mid (nStart, (nEnd - nStart) + 1);
lines.Add (strNextLine);
}
nStart = nEnd + 1;
} while (nStart < strString.GetLength());
return;
} /ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
PJ Arends wrote:
nWrap is the maximun number of characters in the line?
Yes, nWrap is the wrap boundary, i.e. the longest length of the resulting lines.
PJ Arends wrote:
Does lines have to be CPtrArray,
Gak! I told you I was sleep deprived.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hi all,
I have a server and some clients,
I wamt a good solution to send messages to this
clients together.
Best Wishes,
Thanks.
|
|
|
|
|
|
Hello friends I've search in many post of this boards and the Articles, but a can't to find how I can to make the comunications with dialogs, for example I want to manipulate controls (list, Pages,...) of a Dialog One since other dialog two.
Please I somebody know about it, Answer this question.
The Best Regards
NiponWare
|
|
|
|
|
If you have not clicked on "Search comments", please do so at this time. The basic question you are asking has been asked severial time in the passed few months.
By now, someone may have wrote an article on it or placed it in a FAQ.
Well that's the best I can do right now, Good Luck!
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
This is easily done by passing a pointer to DialogOne to DialogTwo , thereby allowing DialogTwo to manipulate controls in DialogOne .
That being said, it's poor programming practice to simply modify controls in another dialog at whim. It's better (imho) that DialogOne expose well defined public methods to manipulate its controls. For example, if you want to repopulate DialogOne 's list control (m_someListCtrl ) member from DialogTwo , expose a method in DialogOne like this:
void repopulateListCtrl()
When DialogTwo wants DialogOne to reload its list control, it makes the following call:
DialogOne* m_pDialogOne = ptr to a DialogOne instance;
ASSERT (m_pDialogOne != NULL);
ASSERT (m_pDialogOne->GetSafeHwnd() != NULL);
ASSERT (::IsWindow (m_pDialogOne->GetSafeHwnd());
m_pDialogOne->repopulateListCtrl();
The implementation of DialogOne::repopulateListCtrl() method should PostMessage() a command to itself which causes the dialog's list control to be populated. This allows dialog specific UI actions to be properly serviced by each dialog's message queue.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hello !
I want to know all the files that are inside a specific folder. Something similar to the CFileFind class in the MFC but WITHOUT using the MFC .
Are there some functions from the API I can use ??
Thanks
|
|
|
|