|
Hi!
I need to exchange data from MFC Dialog A to MFC Dialog B. What I tried is using Messages (like WM_COPYDATA, or user messages (registered/Not registered)) to pass an address of a struct where I have put ma data, but without success. The message never arrives, and I think the problem is that I do not have the handle of B in A, and the ::SendMessage (Or PostMessage) needs a hWnd as first parameter. HWND_BROADCAST instead did not bring anything ...
I only need to pass 1 struct, so I do not want to Use a CMemFile...
Please, CPians, help ... many thanks...
~RaGE();
|
|
|
|
|
Rage wrote:
...pass an address of a struct...
Is this struct created on the heap or the stack?
Rage wrote:
The message never arrives, and I think the problem is that I do not have the handle of B in A, and the ::SendMessage (Or PostMessage) needs a hWnd as first parameter.
You are correct. Without a window handle, Windows does not know to whom the message is to be delivered.
|
|
|
|
|
DavidCrow wrote:
Is this struct created on the heap or the stack?
on the heap.
DavidCrow wrote:
You are correct. Without a window handle, Windows does not know to whom the message is to be delivered.
Any idea how to get that handle ? Is there any simpler way that using EnumWindow or FindWindow ?
Thanks for your answer.
~RaGE();
|
|
|
|
|
Rage wrote:
Any idea how to get that handle ? Is there any simpler way that using EnumWindow or FindWindow ?
There are lots of simple ways. The question is which is the better (i.e., more reliable) way? Read this article on using FindWindow() in the context of controlling the number of instances an application allows.
|
|
|
|
|
So I am writing an editor for a 3D space game with direct X placed inside a Child Frame.. My problem is that. I need to be able to get the title bar info to adjust the size for picking. This will allow me to correctly send mouse coords to pick models in 3d space.
Basically I just need to add the hight of the title bar to the y mouse coord.
I am tryign to use:
TITLEBARINFO ti;
GetTitleBarInfo(&ti);
However TITLEBARINFO is not valid in MFC as far as I can tell. I tried including winuser.h but as usual cant include windows.h in an mfc project. How can I get the size or how can I get the TITLEBARINFO structure in MFC??
|
|
|
|
|
it has to be defined, because
BOOL GetTitleBarInfo(
PTITLEBARINFO pti
) const;
is defined!
Don't try it, just do it!
|
|
|
|
|
Why can't you include windows.h in your MFC project? I can...
A student knows little about a lot.
A professor knows a lot about little.
I know everything about nothing.
|
|
|
|
|
I use it return value ,there is a cmpile error:
Return Values
If the function is successful, it returns NERR_SUCCESS.
If the function fails, the return value is one of the following error codes.
Value Meaning
ERROR_ACCESS_DENIED The user does not have access to the requested information.
NERR_InvalidComputer The computer name is invalid.
ERROR_MORE_DATA More entries are available with subsequent calls.
|
|
|
|
|
Richard White wrote:
I use it return value ,there is a cmpile error:
And which one? In which code?
Please rephrase your question, so that one can understand what you want to ask.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Are you getting a compiler error, or a runtime error? You indicate a "cmpile error" but give no other information.
ERROR_ACCESS_DENIED and ERROR_MORE_DATA are defined in winerror.h.
|
|
|
|
|
this question how u posted it cant be answered!
try again!
Don't try it, just do it!
|
|
|
|
|
I am sorry for my poor english,thank for your help,I search MSDN,can't find NERR_SUCCESS and ERROR_ACCESS_DENIED defined.
I use like this :
if (NetUserEnum(.....) == NERR_Success )<br />
..........
The compiler complain as following.
C:\MYAPP\VCAPP\GetUser\GetUserDlg.cpp(111) : error C2065: 'NERR_Success' : undeclared identifier
|
|
|
|
|
Richard White wrote:
I use like this: if (NetUserEnum(.....) == NERR_Success )
..........
The compiler complains[...]
Sure, because the name of the constant is NERR_SUCCESS .
See the difference? Character case does matter!
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Hi All,
I'm implementing a CFileDialog open/save as application using 6.0.
My problem is trying to prevent the user from browsing above a specific directory, but allow them to browse the directories below it.
I've tried many different approaches, but I still can't get it to work. At the moment I'm capturing the OnFolderChange message, which is produced after the user changes the folder he/she is browsing. In that method, I'm checking the current directory, and if it is outside of my directory range, then I thought I could just set the current working directory to what I need it to be, and then force the application to redraw. Here's the code:
<br />
void CLibselformdlg::OnFolderChange() <br />
{<br />
char buffer[MAX_PATH]="";<br />
DWORD tmp;<br />
::GetCurrentDirectory(MAX_PATH,buffer);<br />
tmp = ::GetLastError();<br />
IUXLogData("are you ready\n",TRACE1);<br />
if (strstr(buffer,"C:\\iux\\data") == NULL){<br />
::SetCurrentDirectory("\\iux\\data");<br />
tmp = ::GetLastError();<br />
this->Invalidate();<br />
}<br />
}<br />
The SetCurrentDirectory I don't think works. The getlasterror returns a 183 after this function is run. You can see the different ways I've been trying to force the window to redraw with the new directory, but I'm not having any luck.
Any Suggestions?
Thanks alot!
Dan
|
|
|
|
|
You need to look at hook functions for common dialogs, specifically handling CDN_FOLDERCHANGE and/or CDN_SELCHANGE.
Steve S
|
|
|
|
|
Steve S wrote:
You need to look at hook functions for common dialogs, specifically handling CDN_FOLDERCHANGE and/or CDN_SELCHANGE.
Yup, been there done that.
|
|
|
|
|
While I can't say for sure since I don't know the entire situation, it seems a better approach would be to set permissions at the OS level. That way, CFileDialog does not have to do anything special. It only "goes" where the user has permission to.
|
|
|
|
|
That's an interesting idea. One that I like. But the people upstairs seem to want to go against what windows does with every other application so I'm stuck trying to limit directory access at this open/save as level.
Any other ideas? Other than creating an open/save as dialog from scratch which IMO makes no sense at all to re-invent the wheel
Thanks guys! I appreciate it!
Dan
|
|
|
|
|
will1383 wrote:
...which IMO makes no sense at all to re-invent the wheel.
They don't seem to mind so why should you? Let it be known (to the powers that be) that such a solution is non-standard and prone to problems.
I worked on a project once where it was decided that a dialog's "X" button and the Cancel button would each do different things. If the dialog was actually doing something, rather than just accepting input from the user, it had both Close and Cancel buttons. I hate it when goofy standards are put in place, only to propagate through the annals of the projects. Changing them requires an act of Congress.
|
|
|
|
|
So far so good in porting our code from 6.0 to .net2003. I have done a small part of this so far and most of the problems can be easly corrected. But, one item that I'm not having any success with is a define that is used in one of our files. The PR_EMS_AB_PROXY_ADDRESSES is defined in the EMSABTAG.H file in <VC 6 Install Dir>\VC98\Include. The problem is that .net2003 does not use the same file.
After looking up this define in the MSDN library, I see that is is now part of the Exchage Server SDK. I cannot find any downloads from the MSDN site (guess M$ wants $$ for this SDK!) so the problem can be fixed.
Does anyone out there who has ported from 6.0 to .net or someone developing with the .net using this define? If so, what do I need to use to get this to compile and keep the functionality?
Thank You In Advance
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
Check out Microsoft Platform SDK.
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Kuphryn
|
|
|
|
|
Can someone direct me to a good tutorial/ description as to how to use Excel in a VC++ app . I need to basically write to an excel file but use the Excel API .
|
|
|
|
|
Obviously, you will need to use OLE to accomplish this. I can't really give you alot of information other than check out MSDN or look on code project for OLE interfaces.
Hopefully that will help. Sorry I can't help more. I haven't done any of this in a while, and I used perl when I did.
Good Luck!
|
|
|
|
|
First you'll need to import from Excel's type library. After that, use the classes that are provided. Here a small snippet that gets two values from the user, plugs them into two cells and puts their sum into a third:
_Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
COleVariant vtOptional((long) DISP_E_PARAMNOTFOUND, VT_ERROR),
vtTrue((short) TRUE),
vtFalse((short) FALSE);
CString strText;
if (app.CreateDispatch("Excel.Application") == TRUE)
{
app.SetVisible(TRUE);
books = app.GetWorkbooks();
book = books.Add(vtOptional);
sheets = book.GetSheets();
sheet = sheets.GetItem(COleVariant((short) 1));
range = sheet.GetRange(COleVariant("A1"), COleVariant("A1"));
m_ebCellA1.GetWindowText(strText);
range.SetValue(COleVariant(strText));
range = sheet.GetRange(COleVariant("A2"), COleVariant("A2"));
m_ebCellA2.GetWindowText(strText);
range.SetValue(COleVariant(strText));
range = sheet.GetRange(COleVariant("A4"), COleVariant("A4"));
range.SetFormula(COleVariant("=A1 + A2"));
}
|
|
|
|
|
David - you'll think I'm following you around the newsgroups...but it proves I've searched before asking the question....
Is the Excel API documented. I've got about as far as I can from the tutorials, ie opening a worksheet, updating cells, saving etc. I want to be able to move cells, pivot tables, cut'n'paste, insert formulaes, basically automate Excel from my app.
Cheers
Angel
************************************************************
The sooner you fall behind, the longer you have to catch up.
|
|
|
|