|
I agree with Mr John R. Shaw It seems DrawTextEx is helpfuls
|
|
|
|
|
Thanks, I will go check it out.
|
|
|
|
|
Hello,
The check boxes provided in the resource editor are pretty, but I would like to create check boxes without using the resource editor (dynamically). How do I do this? Any help is appreciated.
|
|
|
|
|
Need to use CButton class with BS_CHECKBOX style .
e.g.
m_Button.Create(_T("Check Box"), WS_CHILD |WS_VISIBLE|BS_CHECKBOX,
CRect(10,10,100,30), pParentWnd, 1);
|
|
|
|
|
Hello,
I put the following code into CPrintOptionsDlg::OnInitDialog()
CButton m_Button;
// Create check box.
m_Button.Create(_T("Check Box"), WS_CHILD |WS_VISIBLE|BS_CHECKBOX,
CRect(0,0,10,30), this, 1);
However, I didn't see the check box. Any ideas? My CPrintOptionsDlg class is derived from CDialog.
|
|
|
|
|
mla154 wrote: I put the following code into CPrintOptionsDlg::OnInitDialog()
Did you call CDialog::OnInitDialog() before creating the button?
|
|
|
|
|
Yes, I did. My function looks like this:
BOOL CPrintOptionsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CButton m_Button;
// Create check box.
m_Button.Create(_T("Check Box"), WS_CHILD |WS_VISIBLE/*|BS_CHECKBOX*/,
CRect(0,0,10,30), this, 1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
|
|
|
|
|
your CButton object is going out of scope (so it is destroyed) when the OnInitDialog() method
returns.
Try moving
CButton m_Button;
to your class definition (so it's a member of your CPrintOptionsDlg class).
|
|
|
|
|
|
I've mentioned CButton variable name as m_Button , which implies its a class member variable.
|
|
|
|
|
|
My Pleasure.
|
|
|
|
|
Try this
CButton m_Button;
m_Button.Create("Test",WS_CHILD|BS_AUTOCHECKBOX|WS_VISIBLE,CRect(0,0,100,23),this,1);
</code>
|
|
|
|
|
Hi Everyone,
Many thanks in advance for all your help.
Compiler is a Visual C++ 6.0 SP6
machine Dell 3GHz 1 GB memory.
XP Pro
The whole problem started once I decided to include two LIB files to my program. These LIB files are not run unless the user goes into a 3rd CDialog menu and then presses the Start button underneath it. The two LIB files do there jobs and then release the resources and everything is fine. When I made the implementation the compiler gave me some problems and with a help of a college we got the release version to work but the Debug section just doesn't work.
Here are some symptoms:
After Compiling I get this error
Linking...
LINK : warning LNK4098: defaultlib "nafxcw.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
After i press the "Run Debugger" button:
Debug Assertion Failure
Program : C:\WinTAP_Debug.exe
File : appui.cpp
Line 91
After pressing "Retry" then it will take me to this line of code
CDocument* CWinApp::OpenDocumentFile(LPCTSTR lpszFileName)
{
ASSERT(m_pDocManager != NULL); //****->it will point me to this line
return m_pDocManager->OpenDocumentFile(lpszFileName);
}
in the APPUI.cpp file.
I abort after this.
It also points me a line of code in my watch list
ntohs(the_data->data[0])
This is a function that I use in many places of my code but cant seem to find where exactly it is coming from. This is a simple conversion function that has a struct attached to it.
If i step into it then I get
Access Violation 0x0000005
The project settings are:
General TAB **********************************
Use MFC in Static Lib
Link tab************************
Link->Input->Object/Selection module = are the LIB files I included.
TrackerLIB.lib ScanClasssLIB.lib
Ignore Lib section
libc.lib,libcmt.lib,msvcrt.lib,libcd.lib,msvcrtd.lib
Project options has the following
TrackerLIB.lib ScanClasssLIB.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/WinTAP_Debug.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"msvcrtd.lib" /out:"\WinTAP_Debug.exe" /pdbtype:sept
Link->Customize
\WinTAP_Debug.exe
C++ Tab****************************
Code Generation
Blend
Debug Multithreaded
Project options
/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/SurvailanceRadarDataFilter.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
I checked the LIB projects and they are also Multithreaded.
So what is this really. I never had a problem like this.
Many thanks in advance.
ndfspeed
|
|
|
|
|
Here is some additional information and a breakdown on how this project got here.
I have been developing a CDialog program that displays aircraft data and is used as a display program to analyze radar problems. This is a stand alone program that was written in Visual C++ MFC with modul and non-modul dialog boxes. I used STL to store the data in memory and massage the data with certain tasks.
I was tasked to write programs such as a Scan Analyzer and Tracker program.
So I went ahead and wrote them as stand alone programs in Visual C++. They originally both had CDialog boxes and I did all the r&D in VC++ GUI and once I was done I stripped all the GUI code from them and ported them over to be Library's to be attached to the Main Project as analysis tools. So I was successful in doing so in Release mode but the Debug mode just doesn't work. The Release mode does everything it should do and has no problems at all but the Debug mode is in bad shape.
Project settings are as follows for each program
1) WinTAP Program (Main program) under projects settings is:
Release and Debug mode is "Use MFC in Static Library"
1) The Tracker Program under projects settings is :
Release and Debug mode "Use MFC in Shared DLL"
2) Scan Analyzer Program under project settnigs is:
Release and Debug mode "Use MFC in Shared DLL"
Many thanks in advance for all your help.
Yours
ndfspeed
|
|
|
|
|
ndfspeed1971 wrote: 1) WinTAP Program (Main program) under projects settings is:
Release and Debug mode is "Use MFC in Static Library"
For MFC extension DLLs you should use "Use MFC in Shared DLL" for the main program as well.
You may have a problem using two instances of MFC at the same time.
Extension DLLs[^]
|
|
|
|
|
#include <stdio.h>
void main()
{
int n;
printf("Enter digit (0 to 100) > ");
scanf("%d", &n);
while(n < 0 || n > 100)
{
printf("Invalid! Reenter > ");
scanf("%d", &n);
}
//shows message if n != digit (ask for reenter)
printf("You had entred %d\n", n);
}
sorry, I'm new....
|
|
|
|
|
You need to initialize the ‘n’ variable, because if the first call to ‘scanf’ fails the value will still be undefined.
How you are using ‘scanf’ will only convert digits, otherwise it failes, and you should check the return value of the function to determine if it was successful.
Your ‘while’ will not exit until a value has been enter in the required range, so there is no reason to check after the loop has exited.
If you really want to verify each digit as it is entered, then you will need to gather the digits one at a time, in to a character buffer, and call ‘isdigit’ to check each character as it is entered. After gathering digits, use ‘atoi’ to convert it to ‘int’ and then check the range. (Do not forget to make sure the character buffer ends with character ‘\0’.)
Simplified version of your code:
void main()
{
int n = 0;
while(n < 0 || n > 100)
{
printf("Enter digit (0 to 100) > ");
scanf("%d", &n);
if(n < 0 || n > 100)
printf("Invalid! Reenter digits >\n");
}
}
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
I use App-Wizard to create project that derive from CEditView.(It look like NotePad).
My problem is that when the character have change by using the function for edit charactor such as CString::Delete(), CString::Insert()...
At menu Undo it isn't Active.
It look like, It don't know the character have change.
Can anyone help me for solve this problem?
|
|
|
|
|
What function you are using to set text to edit control ?
Because, calling SetWindowText or SetHandle clears the Undo flag.
|
|
|
|
|
|
Please tell me if you have another way to set text to EditCtrl
|
|
|
|
|
Use ReplaceSel , in combination with SetSel .
Edit.SetSel(0,-1);
Edit.ReplaceSel("PRASAD",TRUE);
|
|
|
|
|
use ReplaceSel instead.
This method replaces the current selection.
If you want to replace the whole text, use SelSel() before.
|
|
|
|
|
Hi All ,
I am creating the SDI application for showing the Operating system’s drive explorer tree.
This is working fine for all operating system from Win 2K to XP for 32 Bit.
But If I check it for Windows XP 64 bit operating system then It is showing strange behave , my all hierarchy of files and folders is coming properly but Files and folder of C:\windows\system32 directory are not coming properly , here it is showing the files and folders of C:\windows\systemWOW64 directory.
How to show the actual files and folder of C:\\Windows\\system32 directory ????????
I am using the following code snippet.
ShowFileFolder (CString strPath )
{
HANDLE hInstance;
BOOL bContinue=FALSE;
WIN32_FIND_DATA fatr;
int iCheck=0;
int iLocation;
if(strPath.GetAt(strPath.GetLength()-1)!='\\')
strPath=strPath+_T("\\");
if(strPath.GetLength()==3)
iCheck=1;
strPath=strPath+_T("*");
hInstance=FindFirstFile(strPath,&fatr);
do
{
bContinue=FindNextFile(hInstance,&fatr);
if(!(wcscmp(fatr.cFileName ,_T("."))==0) && !(wcscmp(fatr.cFileName,_T(".."))==0) && bContinue)
{
if(fatr.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if((iLocation=strPath.ReverseFind('*'))!=-1)
strPath=strPath.Left(iLocation);
ShowFileFolder (strPath);
//AddItemToTree(strPath) ;
}
else
{
if((iLocation=strPath.ReverseFind('*'))!=-1)
strPath=strPath.Left(iLocation);
//AddItemToTree(strPath) ;
}
}
}while(hInstance && bContinue);
FindClose(hInstance);
}
ShowFileFolder (“ C:\\Windows\\system32 ”) and ShowFileFolder (“ C:\\Windows\\systemWOW64 ”) showing the same file folder hierarchy but actually both have diff file folders on Windows XP 64 bit OS
Regards
|
|
|
|