|
HI
How can I enter only numeric value in Edit Box
I checked its Property Numeric , but i cannot allow
value with decimal like 34.45
i not want to enter alphabets characters in it , how can i handle or do it
thanx
Regards.
|
|
|
|
|
Hi,
You run a loop and check the ASCII value of the charter entered into that edit box. If the value is falling between 97 - 122 (means user is trying to enter some alphabets using lower case), if the value is falling between 65 - 90 (means user is trying to enter some alphabets using upper case). Here you can give the appropriate message.
Bye....
|
|
|
|
|
I got the idea from your reply thanx
I want to check the ASCII value as i press key from key board that is it
a vlid key pressed .
Where can i catch / check that key pressed event fired on Edit Box .
thanx
Regards.
|
|
|
|
|
|
Hi,
I tried this but it not taking (.) Decimal ( point)
I want Decimal (point) there (.)
as 344.455 ;
but ES_NUMBER is entering it 344455;
waintg for reply
thanx
Regards.
|
|
|
|
|
Oops, sorry - my mistake. I assumed ES_NUMBER allows . too and you wanted the . to be disallowed
Do the same steps as I mentioned in the first post - except don't use the ES_NUMBER style. Now check the entered text in the EN_UPDATE handler and remove all characters other than numbers and .
Nish
My blog on C++/CLI, MFC/Win32, .NET - void Nish(char* szBlog);
My MVP tips, tricks and essays web site - www.voidnish.com
|
|
|
|
|
hi..
You need to derive a new class using CEdit as the base class. There you can code either OnKeydown() or OnChar(, or PreTranslateMessage() message to suit your needs.
For PreTranslateMessage() here is the code...Hope it'll help you
BOOL CMyEdit::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN )
{
int nVirtKey = (int) pMsg->wParam;
if(nVirtKey >= 97 && nVirtKey <= 122) //For Lower Case
{
MessageBox("Cannot enter alphabets");
}
if(nVirtKey >= 65 && nVirtKey <= 90) //For Upper Case
{
MessageBox("Cannot enter alphabets");
}
}
return CEdit::PreTranslateMessage(pMsg);
}
Bye...
Vikram Kashyap
"You will never fail until you stop trying"
|
|
|
|
|
Use a masked edit control.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Hello everyone.
When I release my mfc app. and I want to
Use this exe file in a Windows that haven't
Visual Studio Installed on it this file
give me an error there isn't a file to run...
Please help me on this.
Best Regards.
Thanks.
|
|
|
|
|
Hi...
I think you probably need to ship the supporting DLL's also required by your application. Check the Dll name that is appearing in the message box when u try to execute the application.
Bye...
Vikram Kashyap
"You will never fail until you stop trying"
|
|
|
|
|
Hi!
You have dependency walker in the visual studio tools programs> Microsoft Visual Studio > Microsoft Visual Studio Tools > Depends
Run this, Select File > Open and select your application exe, it will give you a list of dlls your application needs for running. ship all those dlls
Between the great things we cannot do and the small things we will not do, the danger is that we shall do nothing
|
|
|
|
|
You failed to mention the exact error, but have you compiled it in debug mode instead of release mode?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
I open a MessageBox from a dialog "mydialog". When i push the ok button on the MessageBox mydialog be closed but i don't want that.
How can i let open mydialg?
thanks a lot
|
|
|
|
|
|
void CFatture::message(HWND wnd,CString str,int type)
{
if(type==0){
MessageBox(NULL,str,"Info",MB_OK|MB_ICONINFORMATION);
}else{ MessageBox(NULL,str,"Errore",MB_OK|MB_ICONEXCLAMATION);
}
}
and i call this message function with (for example)
theApp.message(NULL,e->Message,1);
from class off "mydialog"
|
|
|
|
|
Sorry, i read wrong, my mistake
I think you should override the OnOK function of the dialog, do not call CDialog::OnOK() in it.
good luck.
"If I don't see you in this world, I'll see you in the next one... and don't be late." ~ Jimi Hendrix
|
|
|
|
|
Compared to your data set, practicaly none and you'll need every bit of that. In Widows x64 it will depend on the compiler you are using, if you are still using a compiler for x32 then it will add no additional overhead. If you change to a compler for x64 then all your int variable sizes will become 64 bit variables (doubles your sets memory size and should double the amount of data vector can handle).
If you don't use vector (or possibly CArray), then you will have to write your own code to handle the array and that may add more overhead than using vector.
The actual overhead in bytes depends on what functions you need to call. When a C++ compiler generates code (well VC6 anyway), I beleive it does not generate code (for templates) that does not get called (a little built in optimization).
If you where writing it in standard C, you would normaly get every function in every staticaly linked library include in your program, whether you called them or not.
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
It really depends on how you are using std::vector. If you don't use reserve and then just push_back each entry, then the vector will grow using a simple doubling algorithm.
For example, push_pack one item and the new size is 1 elements used, 1 element allocated (1U/1A). If you push back another, vector needs to resize the memory so it doubles the size resulting in 2U/2A. On the next push_back it doubles again resulting in 3U/4A. Next push back doesn't require a reallocate, 4U/4A. The next one doubles again, 5U/8A.
Now, given you need to store 100,000,000, the doubling algorithm would result in 134,217,728 elements allocated. This is a waste of a lot of memory.
But that is only half the problem. Everytime that memory is reallocated, it runs the risk of fragmenting your memory. When you are talking about a few KB here and there, it isn't a problem. When you start talking about MB blocks of memory, you will end up with a lot of "free" memory that was once allocated but isn't being used since the bigger allocation can't fit into that block. So you could easily be wasting another 400MB of memory.
BUT, this isn't a problem with vector, it would be a problem with how you are using it. Use reserve to pre-allocate the vector size. Once that is done, what the other guy said would be true.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Thank you for the information, it has been the most helpful.
I use this array to sort data in for stress testing memory. So I needed to know the exact size of memory used. I should write a custom made class
|
|
|
|
|
I'm building an opengl "spy" utility to capture opengl calls. I compiled my own DLL and called it opengl32.dll. The DLL exports entrypoints for most of the OpenGL calls as follows:
typedef void (*glEnable_TYPE)(int cap);
void glEnable(int cap)
{
glEnable_TYPE GL_glEnable;
// returns a handle to the DLL, otherwise NULL
hMod = LoadLibrary("C:/windows/system32/opengl32.DLL");
// returns the address of the DLL function, otherwise NULL
GL_glEnable = (glEnable_TYPE) GetProcAddress(hMod, "glEnable");
GL_glEnable(cap);
}
The problem is, I cannot get the wgl entrypoints (wglMakeCurrent, etc.) to work. Either I include these in my opengl, in which case visual c++ reports:
error C2491: 'wglMakeCurrent' : definition of dllimport function not allowed
Or, if I do not include a definition of these functions, I get:
error LNK2001: unresolved external symbol wglMakeCurrent
Debug/opengl32.lib : fatal error LNK1120: 1 unresolved externals
LINK : fatal error LNK1141: failure during build of exports file
What can I do?
|
|
|
|
|
:(Hi All!
I am getting debug assertion error exactly at the fourth time i open Webbrowser Control, consistently, everytime. CAN ANYONE HELP?
Any help on this regards will be appreciated !
I have two components, one is a MFC Application and the other is a Dll. I have a Webbrowser control in the dll, that is accessed by the MFC App. The following code calls the Webbrowsercontrol, which is in the dll, by the foll code:
"CWebDialog* wb;
wb = new CWebDialog();
wb->DoModal(); "
This code calls the Webbrowser control cpp, in the dll, whose Initdialog has the foll:
BOOL CWebDialog::OnInitDialog()
{
USES_CONVERSION;
CoInitialize(NULL);
try
{
hf_WriteLog("ONINITDLGWEB");
COleVariant vaURL(m_strURL);
((CWebBrowser2*)GetDlgItem(IDC_EXPLORER1))->Navigate2(vaURL, NULL, NULL, NULL, NULL);
hf_WriteLog("NAVIGATED");
VariantClear(&vaURL);
CoUninitialize();
CDialog::OnInitDialog();
}
This throws an exception, every fourth time. Is that a problem with the memory allocation of the dll.. or anything, someone could help????????
Regards
angello6
Regds
Angello
|
|
|
|
|
I do not know, but even in a try block you have to check return values to make sure the functions have succeded.
CoInitialize(0) should be called at program startup and CoUninitialize() should be called at program shutdown, not every time you call OnInitDialog(). May be that is the problem. If you told the application wizard (when generating project) that you were going to use COM objects, then it has already inserted code for those 2 functions. The problem can also be in the DLL.
Good Luck and Good Night!
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|
|
Try to move CDialog::OnInitDialog to the first line of your CWebDialog::OnInitDialog function
Between the great things we cannot do and the small things we will not do, the danger is that we shall do nothing
|
|
|
|
|
"CoInitialize(0) should be called at program startup and CoUninitialize() should be called at program shutdown, not every time you call OnInitDialog()"
Thats not true. CoInitialize should be called at least once per thread; and every CoInitialize should have a corresponding CoUninitialize().
Furthemore, CoInitialize is deprecated, and you ought to be using CoInitializeEx instead.
using System.Beer;
|
|
|
|
|
True, calling the CoInitialize(0) followed by a call to CoUnitialize() should not cause a problem. A dialog window, like probably every other window, is in the applications thread, so if you call CoInitialize(0) at app-startup and CoUnitialize() at app-shutdown, then any other call will be redundant (unless called in a new thread).
Once the programmer has implimented proper error checking and makes sure any resources used are proberly released, the problem should go away.
Jon Hulatt wrote:
you ought to be using CoInitializeEx instead
TRUE
INTP
"The more help VB provides VB programmers, the more miserable your life as a C++ programmer becomes."
Andrew W. Troelsen
|
|
|
|