|
Joel Lipschultz wrote:
Now that all the Message Handler stuff resides in CReceiveClass, I add the following line to the constructor of CSendClass: "PostMessage(WMU_FUN_MSG, 0, 0);"
::PostMessage((CReceiveClass*)->m_hWnd, WMU_FUN_MSG, 0, 0);
The way you have it, you're sending the message to "this"
|
|
|
|
|
I tried adding the line you suggested, and it gave me the following syntax error:
error C2059: syntax error : "->"
Is there another way that I can get a handle to my CReceiveClass?
Joel L.
|
|
|
|
|
I didn't mean for you to literally add that line, that was just a template like example where you're supposed to replace the CReceive* with the actual pointer to the other window.
That or you can just pass the handle directly in the constructor of the send window
in header
public:
CSend(CWnd* pParent = NULL, HWND h_recievewnd = NULL); // standard constructor
in implementation
CSend::CSend(CWnd* pParent, HWND h_recievewnd)
{
ASSERT(h_recievewnd);
ASSERT(::IsWindow(::FromHandle(h_recievewnd)));
::PostMessage(h_recievewnd, WMU_FUN_MSG, 0, 0);
}
Of course you should make sure and Create CReceive first to get the handle to pass to the constructor of CSend
|
|
|
|
|
Joel Lipschultz wrote:
I start a new MFC app and created 2 classes via classwizard, say CSendClass and CReceiveClass (both derived from generic Cwnd). To create the user-defined message stuff, I:
Joel Lipschultz wrote:
I add the following line to the constructor of CSendClass:
Further more you should do ::FromHandle on your CReceive HWND and then ::IsWindow() to make sure the window has been created and the Message Proc has been started. If ::IsWindow is NULL you can not send messages.
You definately should put that elsewhere than the constructor of the other CWnd if they are created "at the same time"
|
|
|
|
|
First of all, thanks for your help. I stepped into the PostMessage function and the Program crashes on the following line, in afxwin2.inl, line 41: (basically what you suspected)
{ASSERT(::IsWindow(m_hWnd)); return PostMessage(m_hWnd, message, WPARAM, LPARAM);}
Given that the program fails when IsWindow returns false -- what would you recommend doing? You mention putting the PostMessage() call in somewhere other than the constructor, but I don't know where else to put it. I tried the Destructor, and it gives the same result.
I am just starting to learn MFC, so please be as descriptive as possible. I appreciate it.
Joel L.
|
|
|
|
|
I did as you suggested, and now the program doesn't go into the if statement (i.e. receiveClass->handle equals NULL).
Joel L.
|
|
|
|
|
WiB forgot these all important steps
CWin->CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL);
CWin->ShowWindow(SW_SHOW);
CWin->UpdateWindow();
|
|
|
|
|
additionally, I recommend you read "programming windows with mfc" - Jeff Procise
|
|
|
|
|
Thank you all, my program works just fine now. I appreciate the help.
Joel L.
|
|
|
|
|
Ok, I set up the project the way you and WiB suggested. Unfortunately, I am having trouble provided parameters for the CreateEx function. I tried doing:
CWin->CreateEx(CReceiveClass, NULL, WS_OVERLAPPEDWINDOW, CRect(50,50, 100, 100),NULL, NULL, NULL);
but haven't had any luck. Can you please provide some parameters for the CreateEx function so my program will draw a basic frame?
Joel L.
|
|
|
|
|
Are you actuall Creating windows for your two classes: CSendClass and CReceiveClass? My guess is not. That would explain why IsWindow() is failing and you are getting the ASSERTs. Instantiating a CWnd derived object does not Create a window.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
How can I connect to a remote database with my ID and Password using VC6 but without a Server Terminal App?
Is this possible?
Thank you very much!
FoolBear
|
|
|
|
|
If you mean in code then it depends what kind of database. If it is for example SQL Server - use ADO[^] to do it.
If not in code than I don't know what you mean
Philip Patrick
Web-site: www.stpworks.com
"Two beer or not two beer?" Shakesbeer
|
|
|
|
|
OK,just bellow:
I used SQL Server 2000 created a data source.Then I put it on to my homepage.Although The server support SQL Server DataBase,but it is impossible for him to run a srever App for my Client App.So I must used my ID and Password connect to it directly from my Client App.Also I want it to work very smoothly no matter where my Client App runs.
FoolBear
|
|
|
|
|
FAADI wrote:
What should I do
Detect what exactly is going wrong: Does it receive WM_CLOSE, is there a return value designating failure, are your splitter classes handling shutdown OK?
Please post all relevant error messages.
My opinions may have changed, but not the fact that I am right.
|
|
|
|
|
Hi
I've made a CStringArray m_array.
It contains about 20text items and 1 text item who is really a integer.
m_array[0] = "TEXT";
m_array[1]="123";
Any easy way to detect when we are dealing with a whole number field?
Greetings
Jens
|
|
|
|
|
for(int i = 0; i < m_array.size()-1; i++)<br />
{<br />
if(m_array[i] == "123")<br />
{<br />
[...do this...]<br />
}<br />
}
thats one way.
*.*
cin >> knowledge;
|
|
|
|
|
No sorry. It is a number, but not always "123".
YOu can't know it in advance.
(sorry if i made question not clear enough)
|
|
|
|
|
<br />
<br />
for(int n=0;n!=m_array.GetSize();n++){<br />
if(m_array[n].GetLength()){<br />
if(isdigit(m_array[n].GetAt(0)))<br />
MessageBox(m_array[n]+" wow! is a number");<br />
}<br />
}<br />
|
|
|
|
|
Thanks alot wb
I did this trick by your help :>
<br />
for (i=0; i<TextArray[2].GetLength(); i++ )<br />
{<br />
if ( !(isdigit(TextArray[2].GetAt(i))) )<br />
{<br />
bOk = false;<br />
}<br />
}<br />
|
|
|
|
|
That'll work, assuming you don't have any instances of something like "1ABC" or "ABC1" in the array.
|
|
|
|
|
try :
<br />
if (atoi (m_array[0])==0 && m_array[0]!="0")<br />
else<br />
You can alos go through each and every one of the character in the string and use the IsDigit function
Shay
|
|
|
|
|
Hi,
Is there any sample code in VC++ to zoom the image display.
I use Bitblt() function to display the image in a view.
Regards
Neha
|
|
|
|
|
|
i am trying to develop an application which prints the web page even it spans horizontally/vertically multiple pages.
i am converting the html document to image and printing the same.
since i am capturing the screen and printing the image ,my css style properties specific to printing are lost.
How do i tell the browser control to read the print media specific information so that when it loads the page it renders the print media specific info onto the screen. is there any exposed method in webbrowser control or what interface should i use to achieve the functionality.
Please suggest me ..
gvs
|
|
|
|