|
Dear all,
In a dialog based application, i want to induce another dialog by
using menu command.
For example,
CMyDialog dlg;
dlg.DoModal();
But i found that the DoModal() cannot be accessed.
What is my missing for this problem?
Thanks in advance!
chen
|
|
|
|
|
what value is DoModal returning?
Bryce
|
|
|
|
|
Thanks Bryce!
The error info is
"Debug Assertion Failed"
File: Viewform.cpp
Line 69.
I want to know are there any other methods for accessing from
one dialog into another dialog.
Thanks in Advance!
chen
|
|
|
|
|
|
Just a guess but it can be a resource id clash. I would open the resource file (resource.h) and make sure all the resource id's are unique.
|
|
|
|
|
Thanks for replys.
I have checked the resource ID, there is no problem.
By step debug, I found that the problem is at the creation of the window.
In CMyDlg I have the following function
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
frame_window = new CFrameWnd();
CRect rect;
GetClientRect(&rect);
rect.bottom -= 10;
BOOL bCreate = frame_window->Create(NULL, "",
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, rect, this, 0);
CRuntimeClass* run_time_class =RUNTIME_CLASS(CGraphView);
if (run_time_class != NULL)
{
grview = reinterpret_cast<cgraphview*>(run_time_class->CreateObject());
};
frame_window->GetClientRect(&rect);
bCreate = grview->Create(NULL, "", WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN, rect,
frame_window, 1);
grview->SetAxisProps("X-Axis", "", 4, GRAPH_X_AXIS, TRUE);
grview->SetAxisProps("Y-Axis", "", 4, GRAPH_Y_AXIS, TRUE);
grview->SetGraphWorldCoords(0, POINTS_X_RANGE, -1, 1, TRUE);
return TRUE;
}
It will call the grview creat function.
It is:
BOOL CGraphView::Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
BOOL b = CScrollView::Create( lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
m_splitter.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE);
m_splitter.SetRowInfo(0, 100, 0);
m_splitter.SetColumnInfo(0, 100, 0);
m_splitter.SetColumnInfo(1, 100, 0);
m_splitter.CreateView(0, 0, RUNTIME_CLASS(CGraphContainer), CSize(200, 200), pContext);
//This code cannot be implemented ! -----------
m_splitter.CreateView(0, 1, RUNTIME_CLASS(CPointsView), CSize(200, 200), pContext);
// ---------------------
pointsview = (CPointsView*)m_splitter.GetPane(0, 1);
grafix = (CGraphContainer*)m_splitter.GetPane(0, 0);
//set minimum size for CPointsView
m_splitter.SetScrollStyle(0);
m_splitter.RecalcLayout();
bSplitterCreated = TRUE;
RECT r;
GetClientRect(&r);
m_splitter.MoveWindow(0, 0, r.right - r.left, r.bottom - r.top);
//no scrolling at all - at least for now
CSize sizeTotal;
sizeTotal.cx = sizeTotal.cy = 0;
SetScrollSizes(MM_TEXT, sizeTotal);
return b;
}
Would you please this: in order to splite the window how to set
the correct size of the window?
Thanks in advance!
chen
|
|
|
|
|
I've read from MSDN that the M$ specific Winsock function AcceprEx when returns in overlapped fashion gives the accepted socket descriptor that is passed as one of its arguments.
But in MSDN doc it is written that this socket descriptor can be used with read(),write(),readfile(),writefile().
Can anyone tell me why this descriptor can't be used with WSARead() and WSAWrite or it can be.
|
|
|
|
|
I'm sure that AcceptEx can be used with WSARecv WSASend.
Normski. - Professional Windows Programmer
|
|
|
|
|
Hi...
msdn.microsoft.com
has the search box, double click on it and it drops down btu has a resize corner..which you can use...
does anyone know how to mimic this?
bryce
|
|
|
|
|
|
cool
now tell me its dead easy to implement like CEdit etc
bryce
|
|
|
|
|
http://codeproject.com/useritems/autocomp.asp
bryce
|
|
|
|
|
This probably is a stupid question... can you change your application's process name at runtime? That's what appears in Windows task monitor, I wanna change it, don't ask me why though, please.
|
|
|
|
|
Without going undocumented? No.
|
|
|
|
|
Mike Nordell wrote:
Without going undocumented? No.
Even with going to undocumented native API I doubt it. The process' name (on NT and above) is, like for any other kernel object, the name passed in the OBJECT_ATTRIBUTES to the NtCreateProcess()native call. Win32 CreateProcess() passes always the EXE name as name of the new process. However there is no way to change the name later on.
--
Daniel Lohmann
http://www.losoft.de
|
|
|
|
|
Or actually sorry I misspoke...whatever lol. Anyway, for example I have a program file named "abc.exe", I run it, open the windows task manager by hitting "alt-ctrl-del" and find "abc.exe" in the "processes" section(not "applications" section). Now I terminate the program, rename it to "def.exe" and run it, goto task manager processes section and check, its process name is still "abc.exe" even though the file had been renamed to "def.exe" before it was executed, how can I change it?
|
|
|
|
|
Aeh, what?
You rename the .exe, run it but it is shown under another name in task manager?
Strange. Very, very strange. Absolutely strange
Are you sure there isn't a second instance running or another program file of the old name still in the path?
--
Daniel Lohmann
http://www.losoft.de
|
|
|
|
|
There was not another instance running. Yeah that's very, very weird, that's why I'm confused and seeking help here...But now I kinda found out something out, the funny part is that, if I terminate "abc.exe", then rename it to "def.exe", then run it, task manager will still show "abc.exe", if, though, I wait for like a minute after I rename it, then run it, task manager will show "def.exe" properly.
Looks like task manager does not update process name immediately... Thanks anyway.
|
|
|
|
|
Only to make it clear (if there is anything that could be made clear is this weird thing ):
1) You kill it in taskmanager, it disappears from TMs process list, rename it and run def.exe. Result: TM shows a (new) abc.exe to be running. Right?
2) You do not close your instance of TM, don't you?
3) What operating system/SP are you using? (I tried it on my XP box, but it seems to work well there)
--
Daniel Lohmann
http://www.losoft.de
|
|
|
|
|
I need to decrypt a string with DES-ECB in VC
Unfortunately I can't use the CryptoAPI.
Can anyone help me getting sourcecode for the algorithm?
Thanks!
|
|
|
|
|
search around for Crypto++ . it has DES and every other crypto algorithm you can think of.
-c
Being just contaminates the void. --Robyn Hitchcock
|
|
|
|
|
Hi all - I'm trying to draw a unicode character (in a non-unicode application, i don't want to have to convert to unicode if I don't have to) using TextOut() in my OnPaint() in my CView.
If i do this:
CString str;
str += WCHAR(230);
TextOut(..., str);
it works fine. The unicode symbol appears properly. But when I try to do it programmatically, using this:
CString str;
str += WCHAR(someStructure.iSomeNumber);
TextOut(..., str);
it doesn't work. A normal character (in the 0-256 range) works.
Some casting going on there that I dont' understand??? Any ideas?
Thanks - A
|
|
|
|
|
CString can only hold one character set, not both. In an ANSI app, CString will only hold ANSI strings, so you'll need to use another class like std::wstring. You'll also need to explicitly call TextOutW() because TextOut is a macro for TextOutA in ANSI builds.
--Mike--
Just released - RightClick-Encrypt v1.3 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Anyone knows Saving and retrieving data from registry?
|
|
|
|
|
PLEASE
Any help on the subject is needed.
PS Methods using CDataBase are preferred
Thanks in advance
|
|
|
|
|