|
In my program, i want to parse the complete URL string into tokens of hostname, port, file, querystring parameters?.
Is there any generic recommended way of doing it , or any libraries available?
modified on Monday, August 9, 2010 10:16 AM
|
|
|
|
|
|
Have you tried UrlGetPart() ?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
|
I've written a stub dll that I would like to use for testing purposes. I would like to replace the full-feature dll with the stub and be able to run the program without re-compiling.
I have written the stub dll and a little driver program that builds against the full-feature lib but when it runs, it loads the stub dll. Unfortunately that does not work, as it complains it can't find the entry point for the functions.
I ran depends on the driver and I can see that its loading the stub dll as expected, but the calls do not resolve. The calls are listed as "unbound" entry point, but the functions from the dll are being exported.
When I compare the full-feature dll and the stub dll in depends I can see that the entry points for the functions are not the same.
Any ideas what I need to do to make it work?
Thanks.
modified on Monday, August 9, 2010 10:49 AM
|
|
|
|
|
VentsyV wrote: When I compare the full-feature dll and the stub dll in depends I can see that the entry points for the functions are not the same.
Any ideas what I need to do to make it work?
I would have though that is fairly obvious. If you wish your application to run via a stub dll then the stub must contain all the functions that the application tries to link to. How else can the calls be resolved?
It's time for a new signature.
|
|
|
|
|
A MDIParent Wnd has many MDIchild Wnds, and also few child dialogs.
Dialogs are created this way --- CAutoDlg *pDlg = new CAutoDlg; pDlg->Create(IDD_AUTOCARD,this);
I want to cascade only a specific type of dialogs, say dialogs of CAutoDlg type only.
If i give MDICascade() it cascades all the child windows and dialogs under the MDIFrame. Is there any other un-conventional way other than calling SetWindowPos for each dialog, based on the position of the previous dialog?
|
|
|
|
|
Elsie wrote: Is there any other un-conventional way other than calling SetWindowPos for each dialog
Not that I know of, but it should be fairly simple to write your own cascading. Write a function that takes the type of window as parameter (typically CAutoDlg) and iterate over all your child frames/dialogs and position the ones inheriting from the supplied base type using IsKindOf().
|
|
|
|
|
I have developed a project in mfc dialog based vc++, i have put a combobox and added an integer typed variable m_number. I want to use this number in the other methods of the dialog but when i write m_number it takes -1, how can i assign the values in the combobox to that variable so that i can use it?
|
|
|
|
|
dilara semerci wrote: i have put a combobox and added an integer typed variable m_number.
Are the two related ? what is m_number ?
dilara semerci wrote: . I want to use this number in the other methods of the dialog
Put the variable in your dialog class.
dilara semerci wrote: but when i write m_number it takes -1,
Write where ? what ? did you initialize the variable to something ?
dilara semerci wrote: how can i assign the values in the combobox to that variable so that i can use it?
Do you mean the m_number variable is the index of the selected item in the combobox ?
Does the method CComboBox::SetCurSel(int nSelect) looks like something you could use ?
good luck.
M.
Watched code never compiles.
|
|
|
|
|
i see that i must write the previous msg much more clear, the m_number is supposed to be combobox's variable. i used to build comboboxes with cstring variable and do the operations with the selected strings but now i wanted to get my hands into the integer world. Whatever, I found this type of solution to my problem ( my problem was i want the user select the integer that he wants to be the limit in the dropbox, with this limit number, i will create threads and do some other operations. I want 10 to be the lowest limit and 100 the biggest) i did some trick and came with this:
[code]
int limit = m_combo.GetCurSel() +10;
[/code]
i had written the numbers from 10 to 100 in the data slot of the combobox so that the 0-indexed element is 10 and the 90-indexed refers to 100.
|
|
|
|
|
Me think you are over complexity-ing things and make things not very user friendly.
Having a combobox with more than 10, 12 items is hard to use, especially just to select a simple numerical value.
Just use a CEdit and the DDV_MinMaxInt macro.
void CdcdcdDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_VA, m_Edit);
DDX_Text(pDX, IDC_EDIT_VA, m_Index);
DDV_MinMaxInt(pDX, m_Index, 10, 100 );
}
and in the InitDialog :
m_number = 22;
UpdateData( FALSE );
or somthing similar.
Watched code never compiles.
|
|
|
|
|
Hi,
I'm using Activex controls (Designed in VB6) in VC++. The Activex control background color is set as White. and in vc++ i'm loading Dialogs which using activex control as Propertypages. the dialogs color will vary at runtime.
so there is mismatching colors between activex controls and my dialogs..
so please help me is there any function available in vb6 or any other solution...?
Waiting for u
|
|
|
|
|
While designing the activeX control itself, the controls for background colors should have been exposed as a property.
|
|
|
|
|
yes, but they have set it as default white.. that's why I'm asking..
|
|
|
|
|
Hi!
I am planning to read and write
data to an EERPOM wired by the
SM-Bus in Windows.
Is this possible by the use of
WMI or do I have to write a driver
by myself?
I found some nice Hardware monitoring
programs here but I am not sure
if it is possible to use them...
(can you give me some hints)?
Kind regards!
|
|
|
|
|
Hi all,
To detect the application idle time,im using GetLastInputInfo function,
but its not returning any values in the structure LASTINPUTINFO.
It is showing the following error in Watch tool. But the program was build successfully.
Error:symbol "li" not found.
Im using the following code:
LASTINPUTINFO li;
li.cbSize = sizeof(LASTINPUTINFO);
::GetLastInputInfo(&li);
Thanks,
|
|
|
|
|
See Here[^]. Are you including windows.h or winuser.h in your code?
I am a HUMAN. I have that keyword (??? too much) in my name........
_AnsHUMAN_b>
|
|
|
|
|
I have included winuser.h
|
|
|
|
|
A watch window will only show the value of a variable if you halt the debugger where the variable is in scope. If it's out of scope (or undefined) the error message will appear.
|
|
|
|
|
You can check the return value of GetLastInputInfo() to see if the function call was successful. You can also use TRACE to show the values inside li on output window.
|
|
|
|
|
Hi all,
I have made a application in which i am reading a port using CreateFile() API with FILE_FLAG_OVERLAPPED parameter as NULL. This all processing i have done in worker thread. Everything is working fine but the problem is when i am trying to close the process i am using CloseHandle API and when the control enters in CloseHandle() the program frezees and there is no option of closing it. The code i am using is as below
void CUse::ThreadStart()
{
ThreadHandle = AfxBeginThread(Thread , (LPVOID) this);
}
UINT Thread(LPVOID pParam)
{
serial_handle = CreateFile(port_arg, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING,NULL,NULL);
.
.
.
.
}
void CUse::OnCancel()
{
ThreadHandle->SuspendThread();
if(MessageBox("Are you sure to stop the process?","ReadingPort",MB_YESNO)==6)
{
ZeroMemory(rxBuffer,128);
ZeroMemory(rxtemp,256);
tempid=0;
CloseHandle(serial_handle);
CDialog::OnCancel();
::TerminateThread(ThreadHandle->m_hThread,0);
}
else
ThreadHandle->ResumeThread();
}
How to resolve this problem or any alternate way of doing it...
Thanks in advance
|
|
|
|
|
One thing you can do here is to open the port outside the thread and then pass in the handle to the thread.
I'm saying this because you're opening the port in one thread and closing it in another.
|
|
|
|
|
You've suspended a thread with work still happening on a file handle. Then pulling the rug out from under it. Who know's what was going on in that thread?
Any time I see a thread being suspended from outside, alarm bells ring. TerminateThread just made them louder.
As you're already working with overlapped I/O...
Why not pass your thread a handle to an Event. Then open and close the handle local to the event (this last bit is optional).
Some pseudo code (ie, I don't have access to a compiler right now)
UINT MyThread (LPVOID lpParam)
{
CMyContext *pSomeStruct = (CMyContext *) lpParam;
OVERLAPPED o = {0};
HANDLE hWait = { NULL, NULL };
o.hEvent = hWait [0] = CreateEvent (...);
hWait [1] = pSomeStruct->m_hQuitThreadEvent;
while (1)
{
if (ReadFile (hPort, ..., &o))
{
Dostuffwithdata ()
}
else if (GetLastError () == ERROR_IO_PENDING)
{
nWait = WaitForMultipleObjects (hWait, 2);
if (hWait == WAIT_OBJECT_0)
{
}
else if (hWait == WAIT_OBJECT_0 + 1)
{
CancelIo ();
break;
}
else
{
}
}
}
CloseHandle (o.hEvent);
return nReturn;
}
You have a good amount of work to make the above fit for production, but I hope it sets you on the Right (ie, my example) path.
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
Hi,
Even I face the same problem when i try to close the handle.
I haven't used any thread to create or close the handle.
I have literally used CreateFileW() to create a handle for serial port communication.
hComm = CreateFileW (pcCommPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
Where pcCommPort is "COM_2"
CreateFileW call succeeds even if device is not connected.
I have send few commands through WriteFile() and read ReadFile() api's and tried to close the handle using
CloseHandle(hComm)
But my application hangs infinitely.
What would be the exact root cause for this issue?
Sample:
While(1)
{
i = 0;
hComm = CreateFileW (pcCommPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
while(i < 10)
{
i++;
WriteFile(hComm , &txBuffer[0], numBytesToTx, (DWORD*)&numBytesTx, NULL);
ReadFile(hComm , &get_data[i], 1, (DWORD*)&numBytesRx, NULL);
}
CloseHandle(hComm);
hComm = NULL;
}
|
|
|
|