|
I'm using Visual C++.NET to do some low level stuff - direct file access, etc. - that I can't do in Visual C#.NET but forms and controls are very tedious hard labor at that level. Is there a way I could use the visual aspects of C#.NET to draw forms and controls and then use them in visual C++.NET?
|
|
|
|
|
I don't see why not, provided you create a managed application that produces a winexe. I've not done it myself, but this language interoperability is something MS has been really pushing.
Of course, you can always do it the other way round also. You ought to be able to create an assembly which wraps unmanaged code and then use this assembly from a C# project, thus create the UI etc. in C# which uses types exposed in the C++.NET assembly.
Again, I've not done it but it would probably be better to produce a UI application in C# that uses a C++ assembly, as opposed to a C++ application which uses a C# assembly to display forms etc. You can probably do it both ways, but the latter is probably less of a head trip
If you need more help let me know and I'll fire up my VS.NET and give it a try.
--
Paul
"I need the secure packaging of Jockeys. My boys need a house!"
- Kramer, in "The Chinese Woman" episode of Seinfeld
MS Messenger: paul@oobaloo.co.uk
Sonork: 100.22446
|
|
|
|
|
Apparently you can debug the release version of the project just like the debug version if you add symbols. How to do this?
Thanks,
ns
|
|
|
|
|
In VC6 go to Project Settings, in C/C++ page select Debug Info: Program Database and in Link page check Generate debug info.
Sonork 100.15206;PavelK
|
|
|
|
|
Okay Thanks.
Another problem....I have the debug version going and when I run it to the breakpoint it brings up a dialog asking where the pdb file is.....mfc42.pdb....
Whats this? It never did this before....
|
|
|
|
|
I've never encountered this. The pdb files (program database) contain debug informations for programs and libraries. By me is the mfc42.pdb file is installed in system directory WinNT\System32.
Sonork 100.15206;PavelK
|
|
|
|
|
Something's wrong if your debug version is linking with mfc42.dll. It should be using mfc42d.dll, so check your linker settings.
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
I'm working on a small database as an exercise to give to my friends and family. This is just to help me learn a little database programming and thought it would help me learn more to add extra functionality to the form.
I've tried and can't figure out how to color the form. I'd like to add a set of buttons (which I've done) that will allow the user to pick the color of the form background.
I'd appreciate any guidence on this.
Thanks
|
|
|
|
|
Hello,
You use the term "form", can you be more specific as to what kind of MFC Object you are referring to?
Maybe this might help:
COLORREF SetBkColor(<br />
HDC hdc,
COLORREF crColor
);
usage:
<br />
CPaintDC dc(this);
COLORREF crText;<br />
crText = RGB(128,128,255);<br />
dc.SetBkColor(crText);
Soliant | email
"The whole of science is nothing more than a refinement of everyday thinking." -Albert E.
|
|
|
|
|
I'm sorry. I should have been more specific.
I am building an ODBC database. The form naturally is the user interface where the fields are.
Thanks a lot for your time.
|
|
|
|
|
(Just a note for the future, when you say "form", C++ programmers probably won't understand what you mean. The term to use is "dialog" or "CFormView" if you're using that MFC class.)
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Thank you Mike, I appreciate your guidence. I'm obviously real new here and I want to learn everything....naturally, there is always a little more to learn than I thought.
Have you got any thoughts on how I can make my CFormView different colors? Can I just make calls to OnPaint like in a CDialog class? I found an example for what I want to do but it's in a CDialogBox; would this be the same except of course for the names?
Thanks
Garry
|
|
|
|
|
OnEraseBkgnd() is the function to use. See the VC Forum FAQ (link at the top of the page), there's a FAQ about this topic. (I think it applies, I've not used CFormView much but I think the view behaves just like a dialog.)
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Thanks a lot Mike, I appreciate your guidance a lot.
Garry
|
|
|
|
|
Whats the relation of database programming and coloring your form? Could you be more specific?
For let the user to choose color you can use CColorDialog .
Mazy
"If I go crazy then will you still
Call me Superman
If I’m alive and well, will you be
There holding my hand
I’ll keep you by my side with
My superhuman might
Kryptonite"Kryptonite-3 Doors Down
|
|
|
|
|
There is no relationship between the two, I just thought that it would be good to explore other areas of programming while completing my database. The class I have derived my program from is CFormView. It's the form here that I would like to allow the user to customize.
Thanks again
|
|
|
|
|
You can override handler of WM_CTLCOLOR for your CFormView (or CDialog) derived class:
HBRUSH CMyFormView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <br />
{<br />
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);<br />
<br />
switch (nCtlColor) {<br />
<br />
case CTLCOLOR_STATIC:
pDC->SetBkColor(RGB(255,255,255));<br />
return (HBRUSH)(GetStockObject(WHITE_BRUSH));<br />
<br />
case CTLCOLOR_DLG:
return (HBRUSH)(GetStockObject(WHITE_BRUSH));<br />
}<br />
<br />
return hbr;<br />
}
The sample sets the form background and the backgroud for static controls to white. See MSDN on WM_CTLCOLOR to see, how to change colors for other standard controls.
For other colors, you need to create custom solid brush (using CreateSolidBrush), you need to solve the resource management for it.
Sonork 100.15206;PavelK
|
|
|
|
|
Thanks a lot! This helps a lot!
Garry
|
|
|
|
|
Hi all,
For some reason I can not get SetItemText to populate my subitems.
m_lcHistory.InsertItem(iCount,bstrUrl);<br />
m_lcHistory.SetItemText(iCount,1,bstrTitle);<br />
m_lcHistory.SetItemText(iCount,2,(LPCTSTR)(csLastVisited));
I am using Report style, I insert 3 columns fine, then the InsertItem populates fine w/ bstrUrl, but the two subitems do not display on my ListCtrl. Any suggestions or references ?
Thanks in advance.
Soliant | email
"The whole of science is nothing more than a refinement of everyday thinking." -Albert E.
|
|
|
|
|
Soliant wrote:
m_lcHistory.InsertItem(iCount,bstrUrl);
m_lcHistory.SetItemText(iCount,1,bstrTitle);
m_lcHistory.SetItemText(iCount,2,(LPCTSTR)(csLastVisited));
change to:
int nItemIndex = m_lcHistory.InsertItem(iCount,bstrUrl);
m_lcHistory.SetItemText(nItemIndex,1,bstrTitle);
m_lcHistory.SetItemText(nItemIndex,2,(LPCTSTR)(csLastVisited));
Best Regards
|
|
|
|
|
Fixed it! Thanks a bunch, a second pair of eyes are invaluable.
Soliant | email
"The whole of science is nothing more than a refinement of everyday thinking." -Albert E.
|
|
|
|
|
I cant get the mainframe to respond to the WM_HSCROLL sent by the slider. I saw an article in which the slider is put into a separate toolbar, created by a new class. This class responds to the notification from the slider in it. However, I just want the slider in my standard toolbar and cant trap the WM_HSCROLL....
Please help!
Thanks,
ns
|
|
|
|
|
Hello,
I am developing an application using sockets where I need to send numerical data, in particular floats between the client/server. I tried using sprintf/CString to format the float as text which was not very reliable as the precision needed it quite high.
Is there a way to reliably convert (cast) a float to a 4 byte character array? Do you have any code snippets that can do this? Thanks.
Ted
|
|
|
|
|
A 4-byte char array can only hold 3 characters, which obviously isn't enough precision for a float. Can't you just send the raw data? sizeof(float) will tell you how many bytes to send/receive.
--Mike--
Just released - RightClick-Encrypt v1.4 - Adds fast & easy file encryption to Explorer
My really out-of-date homepage
Sonork-100.19012 Acid_Helm
|
|
|
|
|
Mike,
How would I do that, like this? Here is the function:
INT SetDataToSend(LPCSTR lpDataToSend, UINT lenDataToSend);
void Test()
{
float x = 34.23231;
SetDataToSend((LPCTSTR) x, sizeof(x));
}
Ted
|
|
|
|