|
Can you post your PreTranslateMessage() code?
Where is this "if-statement" you speak write of?
|
|
|
|
|
Actually I made a simplification when I described the problem. The PreTranslateMessage() checks for a TAB-keypress and as long as TAB is held down it calls CCameraControlDlg::ManualMode()
The CCameraControlDlg is the main dialog.
BOOL CCameraControlDlg::PreTranslateMessage(MSG* pMsg) <br />
{<br />
<br />
if (GetAsyncKeyState(VK_TAB) < 0) { <br />
CCameraControlDlg::ManualMode();<br />
}<br />
Sleep(10);<br />
return CDialog::PreTranslateMessage(pMsg);<br />
<br />
}
In the CCameraControlDlg::ManualMode() function there are again and if-statement. This look for F2-keypresses as shown below. As long F2 is held down it calls the MouseScroll-function which is used for scrolling up and down a menu in the other dialog. Then m_dlgMenu.ShowWindow(SW_SHOW) are used to show the other dialog. When the F2-key is released the other if-statement will be true and should hide the window. But nothing happens until the mouse is moved (the TAB-key is still pressed).
<br />
void CCameraControlDlg::ManualMode() {<br />
.<br />
.<br />
.<br />
<br />
if ((GetAsyncKeyState(VK_F2) < 0) && ((control_nr == 2) || (control_nr == 0))) { <br />
<br />
x_F2 = MouseScroll(menu_roof, reset_val);<br />
<br />
m_dlgMenu.ShowWindow(SW_SHOW);<br />
m_dlgMenu.m_strHeader.Format("White Balance");<br />
m_dlgMenu.m_strChoice.Format(menu_text_F2[x_F2]);<br />
<br />
m_dlgMenu.UpdateData(FALSE); <br />
<br />
control_nr = 2;<br />
<br />
}<br />
<br />
else if (control_nr == 2) {<br />
<br />
m_dlgMenu.ShowWindow(SW_HIDE)<br />
control_nr = 0;<br />
}<br />
<br />
.<br />
.<br />
.<br />
}<br />
Another thing is that it works as expected if the style of the other dialog is set to "child" instead of "popup" but when F2 is held down the dialog flickers a couple of times before it is shown , which is annoying. This is not the case when the style is "popup".
Thanks for your help
|
|
|
|
|
Hehe, got it to work
I placed a PreTranslateMessage() in the code for the other dialog and it called OnOK() when GetAsyncKeyState(VK_F2) == 0
|
|
|
|
|
hi , i m new n i just managed one clinet server prg but i am not able to connect multiple client to my server.
|
|
|
|
|
<--- maybe that's the problem!
Have you written your server to accept multiple clients?
Bare minimum, I imagine you'll at least need to keep a list/array of SOCKETs.
|
|
|
|
|
Probably should have sent him a McDonalds menu.
led mike
|
|
|
|
|
I actually had a filet-o-fish for lunch. What does this say about my programming "skills"?
Hanging my head in shame,
Mark
|
|
|
|
|
tks for help i am dont with my project
|
|
|
|
|
I'm sorry to ask such a simple question but my compiler is spitting out errors and dosen't recognize CString. I can't figure out what's wrong. String works fine though. I'm trying to use it for MFC. Here is the code:
include <iostream>
#include <string>
#include <cstring>
#include <cstddef>
#include <cctype>
using namespace std;
int main()
{
CString Test;
Test = "It Worked!";
cout<<Test;
cin.get();
return 0;
}
Thanks.
|
|
|
|
|
What errors on what lines?
Are these still the include files for VC 2005?
#include <cstringt.h> //MFC-only string objects
#include <atlstr.h> //Non-MFC string objects
|
|
|
|
|
Thanks for the help (all). I got that part of it fixed. The problem is that it's now causing another error:
fatal error C1189: #error : WINDOWS.H is already included. MFC Apps must not #include <windows.h>.
I've checked every single include statement, and Windows.H isn't there. It might be a dependancy of one of the include files though. I'm also being forced to use cstringt.h in my MFC classes and atlstr.h in my non-MFC classes, all in the same project. It's unlikely but that might have something to do with it. Here is all of my include files, if someone could look at them please:
"phone_interface.cpp"
#include <cstringt.h>
#include <string>
#include <iostream>
#include <iomanip>
#include <strstream>
#include "phone_interface.h"
#include <afxwin.h>
//File Name: "sort.rc"
#include <afxres.h>
#include <phone_ids.h>
//File Name: "phone_main.cpp"
#include <cstdlib>
#include <cstddef>
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#include <strstream>
#include <phone_interface.h>
#include <afxwin.h>
#include <phone_ids.h>
//File Name: "phonebook_class.cpp"
//File Description: Implementation file for PhoneBook class
#include <iostream>
#include <string>
#include <fstream>
#include <cstddef>
#include <atlstr.h>
#include <sstream>
#include "phonebook_class.h"
#include "defenitions.h"
//File Name: "usermenu_class.cpp"
//File Description: Implementation file for UserMenu class
#include <iostream>
#include <string>
#include <cctype>
#include "usermenu_class.h"
#include "phonebook_class.h"
#include "defenitions.h"
//File Name: "Common_Defenetions.h"
//Description: Common header file for structure and enumeration defenitions.
#ifndef DEFENITIONS_H
#define DEFENITIONS_H
#include <iostream>
#include <string>
//File Name: "phone_interface.h"
#ifndef PHONE_INTERFACE_H
#define PHONE_INTERFACE_H
#include <iostream>
#include <string>
#include <strstream>
#include <fstream>
#include <afxwin.h>
#include "usermenu_class.h"
//File Name: "phonebook_class.h"
//File Description: Decleration file for PhoneBook class
#ifndef PHONEBOOK_CLASS_H
#define PHONEBOOK_CLASS_H
#include <iostream>
#include <cstddef>
#include <string.h>
#include <sstream>
#include <atlstr.h>
#include "defenitions.h"
//File Name: "usermenu_class.h"
//Description: Declaration file for UserMenu class
#include <iostream>
#include <string>
#include "defenitions.h"
#include "phonebook_class.h"
Sorry for the long post. Thanks for the help.
|
|
|
|
|
#include <afxwin.h> //<--- this pulls in windows.h
I would recommend creating a temp MFC project that is close to the type of project you are
working on. Then take the stdafx.cpp and stdafx.h from that temp project and copy them to your
project. stdafx.h is the default pre-compiled header file and should be included at the top of every
cpp file in your project. Make sure in your project settings - C/C++ - Precompiled headers -
Create/Use PCH through file setting is set to stdafx.h. This should give you most, if not all, of
the headers you'll commonly need.
|
|
|
|
|
I'm sorry, I think the forum chopped off the include file you were talking about. Can you check the "Ignore HTML tags in this message" box below the smilies please.
|
|
|
|
|
I always do that!
#include <afxwin.h> //<--- this pulls in windows.h
I would recommend creating a temp MFC project that is close to the type of project you are
working on. Then take the stdafx.cpp and stdafx.h from that temp project and copy them to your
project. stdafx.h is the default pre-compiled header file and should be included at the top of every
cpp file in your project. Make sure in your project settings - C/C++ - Precompiled headers -
Create/Use PCH through file setting is set to stdafx.h. This should give you most, if not all, of
the headers you'll commonly need.
|
|
|
|
|
Why are you not putting the standard include files (e.g., iostream , afxwin.h , string ) in your project's stdafx.h file? Your compiles will be noticeably faster.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
CoffeeAddict19 wrote: ...my compiler is spitting out errors and dosen't recognize CString. I can't figure out what's wrong.
CString is a class in MFC, which your project is apparently not using.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
replace the include <cstring> by <string>
and use std::string instead.
methink your are confused about the <cstring> header.
|
|
|
|
|
If you are using Visual C++ 2005, Unicode is the default.
#include <stdio.h>
#include <tchar.h>
#include <atlbase.h>
#include <atlstr.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
CString test;
test = _T("It worked!");
std::wcout << static_cast<LPCTSTR>(test) << std::endl;
return 0;
}
|
|
|
|
|
|
|
I am producing a mobile application using embedded VC++ 4 which contains multiple dialogs.
It was intended to step through the dialogs using a next button which would open the next dialog and close the current dialog. Also a previous button which does a similar thing.
The code used to open the next and close current is
Class2 dlgClass2(this);
nRetCode = dlgClass2.DoModal();
CDialog::OnCancel();
And for the previous button on the dlgClass2 button
Class1 dlgClass1(this);
nRetCode = dlgClass1.DoModal();
CDialog::OnCancel();
However by continually selecting next on the dlgClass1 and previous on dlgClass2 the application crashes after the 11th or 12th attempt.
Does anyone know please why this is happening? Are you able to close the current dialog or does it need to remain open?
Note also posted this on the mobile development section.
SDT
SDT
|
|
|
|
|
CDialog::DoModal() will not return until the dialog is dismissed, hence it's called modal.
So you have a dialog calling another dialogs DoModal that calls the first dialog's DoModal that calls the second dialog's DoModal().... you get the picture, right?
It's not even the same dialog you call the second time since you create a new instance on the stack, it's just the same class.
Eventually you will run out of stack space and the application will crash or worse.
What you need to do is either post messages to the container of the dialogs that calls DoModal for each dialog when handled, or create modeless dialogs so that your CDialog::OnCancel() call will be executed and the dialog can be dismissed.
--
Roger
"It's supposed to be hard, otherwise anybody could do it!" - selfquote
"No one remembers a coward!" - Jan Elfström 1998 "...but everyone remembers an idiot!" - my lawyer 2005 when heard of Jan's saying above
|
|
|
|
|
This sounds like an odd design. Have you considered a wizard-type property sheet?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
EndDialog(), might help. Please check it and let me know if doesn't work.
|
|
|
|
|
Raj Prathap wrote: EndDialog(), might help.
Doubtful. The problem, as Roger has alrady mentioned, is that Dialog1 is calling Dialog2 is calling Dialog1 is calling Dialog2...
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|