|
|
I have a dll written in C++ running in a Linux machine. Now i want to move that dll to a Windows system and use it with a Windows application.
How can i do that?
Can you please tell what all are the performance issues i face?
What all are the dependencies?
Thanks in advance
|
|
|
|
|
Depends - does it use Linux specific APIs or is it plain standard C++ ?
I don't see why you'd expect performance issues. The dependencies depend entirely on the nature of hte code.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
hi,
I want to post message from my worker thread to the main frame window in a SDI application. To do so I need to pass hWnd or pMainWnd to the child thread. Because I create my thread in CDocument::OnNewDocument, I need to get handle or pointer to the main frame window from inside CDocument. Is there any way to do that ?
|
|
|
|
|
|
thanks,
i have tried AfxGetMainWnd()
it works fine in CMyDoc but when I pass the pointer to my thread and call postmessage from inside my thread, program crash. the code is like this:
CMyDOc::OnNewDocument()
{
m_pMyWnd = AfxGetMainWnd();
m_pMyWnd->PostMessage(WM_MYMSG,0,0); --> run OK
CX25Thread* m_pX25Thread;
m_pX25Thread = (CX25Thread*)AfxBeginThread(RUNTIME_CLASS (CX25Thread),THREAD_PRIORITY_NORMAL,
0, // stack size
CREATE_SUSPENDED);
m_pX25Thread->m_pMyWnd = m_pMyWnd;
m_pX25Thread->ResumeThread();
}
In Mythread:
when I call m_pMyWnd->PostMessage(WM_MYMSG,0,0); --> program crash ! i don't understand why
|
|
|
|
|
I took an old multithreaded app and gutted it to use AfxGetMainWnd() to populate a member variable in the thread and the CMainFrame is receiving the messages without any apparent problems.
The message was registered with RegisterWindowMessage().
All the thread creation code is consistent as your snippet so I'm not sure what it is you are fighting. Do you have any other details that might help us identify where our code differs?
|
|
|
|
|
I've found the problem
AfxGetMainWnd() returns 0 in CMyDoc::OnNewDocument()
AfxGetMainWnd() only return after all MainFrame, Doc, View have finished initialize.
So to get the correct pointer, I must put it earliest in the end of InitInstance and it work.
|
|
|
|
|
That would make sense. I had put my code in a button click handler for the view so I guess I didn't pay enough attention to where your code was being placed versus the code itself.
|
|
|
|
|
Try passing the HWND to the thread instead of the CWnd pointer. You can get the HWND by doing something like m_pX25Thread->m_hWnd = m_pMyWnd->m_hWnd; .
Best wishes,
Hans
|
|
|
|
|
use AfxGetMainWnd();and typecast to the mainframe pointer.
I dont know if it works or not just give a try.if its not working
we will try again.
|
|
|
|
|
hi, i am new to visual C++ programming. i have a problem.
i have a windows hooks service that runs on a local machine. however, when i try to run it from a remote desktop it does not work. i plan to develop a C++ application which can solve the above problem. Can anyone help me with code to create a remote desktop connection?
i would be extremely thankful for the help....
- Moonis
|
|
|
|
|
Hi,
Here's what I need to do:
I have a tree view control that has a list of strings on it. Those strings can be updated outside of the tree view. When updated outside the tree view, I need to update their strings inside the tree view to match the newly edited strings.
So the question: Is there any way to get an item in a tree view without knowing its handle? Can't I just get it by string or something? I figured I'd just search through the tree view to find the TV_ITEM with the matching string, then update it to the new string with a TVM_SETITEM message. I think this should work just fine, if I could get the TV_ITEM in the first place, but the TVM_GETITEM message only seems to retrieve by handle.
Thanks!
KR
|
|
|
|
|
With TVM_GETITEM, you can get several items of information about the items, including the text.
Check out the TVITEM struct and the TVITEM.mask (TVIF_TEXT), TVITEM.pszText, and
TVITEM.cchTextMax members.
I believe you'll need to use TVM_GETNEXTITEM (with TVGN_ROOT, TCGN_NEXT, etc) to traverse the
tree getting the handles to pass to TVM_GETITEM.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Okies, I didn't realize I could use TVM_GETNEXTITEM to get the root tree item. Thanks a lot, this should work perfectly.
KR
|
|
|
|
|
Hello there. I hope you have a solution to my question, because is blowing my mind. I have a rich edit control and i'm getting the input to a CString using GetWindowText. Now i want to convert the string to double. I' m using atof(), but that's not my case... The value in the rich edit represents a number between 0 and 20. If i write "Hello" in the rich edit or "12.h", atof() still converts it to double, but differently the user didn't type something between 0 and 20. Even more didn't type a number at all. Is there any way to do this?
|
|
|
|
|
This is what MSDN says about atof : The function stops reading the input string at the first character that it cannot recognize as part of a number.
So its up to you to scan the string for non-numeric characters before calling atof . You could use ES_NUMBER on the rich edit control, if you only wanted the user to enter numbers - in that case a simple edit control would work.
Best wishes,
Hans
|
|
|
|
|
johnny__XP wrote: but differently the user didn't type something between 0 and 20. Even more didn't type a number at all. Is there any way to do this?
better use _tcstod
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
always use _strtod
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Hi guys,
I am writing a simple program that the user would like to be able to run from the command prompt. I am wondering how I pass that infromation into the main of my program. For example, if you wish to run Windows explorer from the command line you pass the command "explorer". This will launch Windows explorer and default to showing C:\. However, you can also call explorer and have it open a specific directory "explorer C:\Test\MyTest".
My question is this:
Is the second part of that simply passed as the argument to main? For example if I wanted my program to specify a string, could I have my main function accept a const char *?
I.E. void main(const char *inputString) ?
where inputString would be whatever it is that I have passed immediately after my *.exe name?
so the total call would be something like:
C:\> stringParser This Is My Test
which would hopefully pass a pointer to "This is My Test" into my main argument.
Thanks,
Joe
|
|
|
|
|
In Visual C++, you can use the version of _tmain that has command line argument parameters:
int _tmain(int argc, _TCHAR* argv[])
See main: Program Startup[^]
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Mark Salsbery wrote: int _tmain(int argc, _TCHAR* argv[])
strange from microsoft that argv is not an array of const TCHAR*
|
|
|
|
|
toxcct wrote: strange from microsoft that argv is not an array of const TCHAR*
Yeah. I guess it stays consistent with the old days of C
There's no const in any of the prototype variations.
Beats me!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
if you somehow graduate to windows programming you can use GetCommandline api to reterive the command line
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Hi all,
Can any one convert this simple piece of code from C#.NET to C++(general). I am getting error while performing this. I guess i am going wrong somewhere.
private String GetFileName(String filter){
OpenFileDialog dlg = new OpenFileDialog();
dlg.Multiselect = false;
if(filter.Length > 0){ dlg.Filter = filter; }
if( dlg.ShowDialog(this) != DialogResult.Cancel){
return dlg.FileName;
}else{
return null;
}
}
private void btnImageFile_Click(object sender, System.EventArgs e) {
String fileName = GetFileName("Bitmaps (*.bmp)|*.bmp|Tagged Image File Format(*.tif)|*.tif|PNG-24(*.png)|*.png");
if(fileName != null){
txtImageFile.Text = fileName;
SetImage(fileName);
}
Thanks a lot
|
|
|
|