|
I would like to place a lot of components in 1 dialog. But i want it to stay small, and i want to move from one control to another with scroll bars. Something like - I have 100 Edit boxes, but for one time i can see only 5, and by pushing the scroll bar i would like them to move from right to left or backwards.
How to do it???
I tried to enable the horizontal scroll bar in my Dialog(in the properties window), but i didn't understand how does it work.
|
|
|
|
|
Hi Rassul,
There's a simple and slightly hacky approach and there's the stanradrd approach. The hacky one is a subset of the normal one.
What you'd usually do, is create a dialog containing your 100 edit-boxes or any other thing you'd like to display. This dialog should have no border/caption/etc.
Now create your normal application dialog, and place a static control over most of it, lets call this a place-holder.
What you'd do now is create the 100-edit-box dialog as a child of this static control. Since window's clips everything, you'll only see the first five. If you 'SetWindowPos' and move the 100-edit-box dialog upwards, it will simulate a scroll downwards. All you have to do is connect this with scroll-bar functions and youre good.
But... this isn't the easiest thing to do, so... You can also create your 100 edit-boxes dynamicaly, and change their positions according to scroll-bar movements (remember it's all clipped so most of them are simply hidden nicely).
Use methods like CWnd::SetScrollInfo , GetScrollPos . Respond to messages like WM_HSCROLL .
Keep in mind that there may be other ways, but the last one is pretty straight-forward.
cheers
|
|
|
|
|
Hi guys
I've implemeted the solution proposed in
ID:Q117563 How to trap WM_KEYDOWN Messages in a CDialog succesfully but...
the problem is that each time I press a key, an ennoying 'ding' sounds.
Do you know what I have to do to avoid this 'ding' sound?
Best Regards
Doc
|
|
|
|
|
It's hard to say, without narrowing it down to just a few lines of code. If, in the overridden ProcessMessageFilter() , you simply called the base class implementation, does the 'ding' go away?
[edit]
I have a small application that displays a modal About box. When that dialog is up, any key press causes the 'ding' sound. I then added a few controls to the dialog. Depending on which control had focus, the 'ding' either happened or it didn't. I did not have an overridden ProcessMessageFilter() method.
[/edit]
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
I guess if you return 0 in the WM_KEYDOWN event will probably remove the ding sound.
MSN Messenger.
prakashnadar@msn.com
Tip of the day of visual C++ IDE.
"We use it before you do! Visual C++ was developed using Visual C++"
|
|
|
|
|
Hi guys
Sorry for the delay, but the Atlantic Ocean is between us. ))
This is the substituted ProcessMessageFilter,sending a message to the dialog.
Previously I've fill m_hwndDialog with the handle to my dialog.
BOOL CMQWinApp::ProcessMessageFilter(int code, LPMSG lpMsg)
{
// Check to make sure CPenWidthsDlg is up
if (m_hwndDialog != NULL)
{
if ((lpMsg->hwnd == m_hwndDialog) ||
::IsChild(m_hwndDialog, lpMsg->hwnd))
// Use ::IsChild to get messages that may be going
// to the dialog's controls. In the case of
// WM_KEYDOWN this is required.
{
if (lpMsg->message == WM_KEYDOWN) {
TRACE("Got WM_KEYDOWN\n");
SendMessage(m_hwndDialog,WM_KEYDOWN,lpMsg->wParam,lpMsg->lParam);
}
}
}
// Default processing of the message.
return CWinApp::ProcessMessageFilter(code, lpMsg);
}
The ding is produced after my OnKeyDown method is processed in my dialog.
Some clue?
Doc
|
|
|
|
|
Hi!
The idea came from ICQ, where if you dock it to the sides it limits the size of the desktop the same way as i.e. the tray does.
So I'd like to know how to restrict the desktop, and therefore the size of the maximized windows', is there even any way, a func, or something...
Thx in forward
|
|
|
|
|
One possible solution is WM_GETMINMAXINFO message in MFC.
Kuphryn
|
|
|
|
|
Read up on application bars (app bars) in MSDN, those are the windows like the taskbar that dock to the sides of the screen.
--Mike--
Personal stuff:: Ericahist | Homepage
Shareware stuff:: 1ClickPicGrabber | RightClick-Encrypt
CP stuff:: CP SearchBar v2.0.2 | C++ Forum FAQ
----
There is a saying in statistics that a million monkeys pounding on typewriters would eventually create a work of Shakespeare. Thanks to the Internet, we now know that this is not true.
|
|
|
|
|
Is there a certain file I should include to use the namespace std? I keep trying to put in my file 'using namespace std' and keep getting an error telling me that namespace doesn't exist
If it's broken, I probably did it
bdiamond
|
|
|
|
|
no, there's no single file to include, and if you're not using any classes that are in std, you don't need to use the namespace.
but, if you want to have "using namespace std;" for some other reason and just want to get rid of that error message, try :
#include < vector >
Cleek | Losinger Designs | ClickPic | ThumbNailer
|
|
|
|
|
thanks, I had already gotten it to do that by including <iostream>. I only wanted to use it because I thought it was possibly the cause of another error, but it wasn't, so I'll keep working!!;P
If it's broken, I probably did it
bdiamond
|
|
|
|
|
Hello,
I want to insert two files in a MFC workspace. Two files are readText.h and readText.cpp.
the header file is:
#ifndef _READTEXT_H_
#define _READTEXT_H_
#include "fstream.h"
void readText(char *filename, int *spalte, int *zeile);
#endif
and at the begin of the readText.cpp I write #include "readtext.h
but there is a compile error C1010. how should I write the header file?
thanks in advance
dada
|
|
|
|
|
Your project uses pre-compiled headers, your .cpp file needs to #include "stdafx.h" before it includes anything else.
|
|
|
|
|
it works! thank you very much!;)
|
|
|
|
|
Hi,
I'm having trouble using WaitForSingleObject for the handle used in ShellExecute(). The mutex returned always has 0xffffffff, i.e. WAIT_FAILED.
Why dont I receive any of these:
WAIT_OBJECT_O, WAIT_ABANDONED or WAIT_TIMEOUT.
It seems that the handle from ShellExecute cannot be used with WaitForSingleObject. If thats the case, then what should I use to wait for the ShellExecute process to complete?
Note: ShellExecute process executes a batch file which has several commands to run on command prompt. This proocess takes several seconds to complete, which could vary though.
Any help or comments are appreciated.
Thanks,
- Nirav
===========================================
x = ShellExecute(handl, "open", "foo.bat", NULL, NULL, SW_HIDE);
mutex = WaitForSingleObject(handl,INFINITE);
do {
mutex = WaitForSingleObject(handl,INFINITE);
} while(mutex == WAIT_OBJECT_0);
if(mutex != WAIT_OBJECT_0)
return E_FAIL;
BOOL status = ReleaseMutex(handl);
if (status == 0) {
DWORD LastErr = GetLastError();
}
===========================================
|
|
|
|
|
Your second wait is returning the INVALID_HANDLE. If you use the INFINITE flag, then the second wait is unnecessary and invalid.
onwards and upwards...
|
|
|
|
|
OK.
If I remove the first wait, it still returns the same mutex (0xffffffff) from the second wait.
Any clue?
Thanks again.
|
|
|
|
|
The first parameter to ShellExecute() and WaitForSingleObject() are not the same thing. The former is a window handle, while the latter is a handle to an object. What you want is something like:
PROCESS_INFORMATION pi = {0};
CreateProcess(..., &pi);
WaitForSingleObject(pi.hProcess, ...);
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
I'm not sure if I can execute a batch file on command line using CreateProcess.
Note that the batch file include several different commands (compile and link) which needs to execute on the "same" command line window.
CreateProcess execute an application with one command only. I'm not sure if it can execute a batch file.
If I execute the following code, I get exception handling error on CreateProcess() line.
===============================================
PROCESS_INFORMATION pi;
if(CreateProcess("foo.bat", NULL, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, NULL, &pi) == FALSE) {
return S_FALSE;
}
do {
mutex = WaitForSingleObject(pi.hProcess,INFINITE);
} while(mutex == WAIT_OBJECT_0);
|
|
|
|
|
ndalal wrote:
I'm not sure if it can execute a batch file.
Yes, it can be used with .bat files.
I do not think NULL is a valid option for the ninth parameter.
The do/while loop seems unnecessary as WaitForSingleObject() will do its own waiting without using any processor time. As you have it written, WaitForSingleObject() will wait indefinitely for the object's state to become signaled, but will then loop infinitely as the state will remain signaled.
"The pointy end goes in the other man." - Antonio Banderas (Zorro, 1998)
|
|
|
|
|
|
I am using a dialog based application.
The application will generate a report after doing a lot of testing.
I want the report to be printed whenever the user presses one button from the dialog box.
Can anyone help me.
Joesam
|
|
|
|
|
See this article[^] by Richard Stringer. Should have everything you ever need in printing from MFC programs.
-Antti Keskinen
----------------------------------------------
The definition of impossible is strictly dependant
on what we think is possible.
|
|
|
|
|
This article of mine MFC CDialog print/preview extension[^] will do exactly what you need.
Roger Allen - Sonork 100.10016
Strong Sad:
Clever I am? Next to no one.
Undiscovered and soggy.
Look up. Look down. They're around.
Probably laughing. Still, bright, watery.
Listed among the top. Ten.
Nine. Late night. Early morn.
Early mourn. Now I sleep.
|
|
|
|