|
I launch Visual Studio 6.0.
I open my .exe file as "resources".
I change the string table values.
I save (Ctrl+S).
Then, maybe VS calls UpdateResource() in this case?
Thanks and regards
Pascal
|
|
|
|
|
|
The size of the string only really matters if you are doing the changes directly in the binary. If you use the resource updating functions, you can change the size of the string.
Of course, if the code of the executable expects the string in a certain format or length...
Peace!
-=- James If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! DeleteFXPFiles & CheckFavorites (Please rate this post!)
|
|
|
|
|
Of course, if the code of the executable expects the string in a certain format or length...
This would certainly be my primary concern if making the strings longer.
People that start writing code immediately are programmers (or hackers), people that ask questions first are Software Engineers - Graham Shanks
|
|
|
|
|
|
I am porting a windows application to Linux and would like to keep a portion of the windows code that uses WSAAsyncSelect the same. I can implement this using a busy while loop checking select/FD_ISSET on my sockets. But this seems inefficient. Is there a linux equivalent to this function?
|
|
|
|
|
I just found <sys epoll.h="">. Need to get better with my google queries
|
|
|
|
|
Jnewg5 wrote: I just found . Need to get better with my google queries
meant to include "sys/epoll.h"
|
|
|
|
|
Hi,
I am working with threads. I have a thread safe class as shown below.
class CUxx_MS_ListWordToPtr
{
// VARIABLE DECLARATION SECTION
public:
private:
//##ModelId=38BB19E501C9
CUxx_MS_CriticalSection m_Lockable;
//##ModelId=38BB19E501B5
CMapWordToPtr* m_List;
CSemaphore threadlock;
// FUNCTION DECLARATION SECTION
public:
// Construction
//##ModelId=38BB19E50291
CUxx_MS_ListWordToPtr(int nBlockSize = 10)
{
m_List = new CMapWordToPtr(nBlockSize);
}
// lock functions
//##ModelId=38BB19E50290
void Lock()
{
m_Lockable.Lock();
}
//##ModelId=38BB19E50287
void Unlock()
{
m_Lockable.Unlock();
}
// Attributes
// number of elements
//##ModelId=38BB19E50286
int GetCount() const
{
//CUxx_MS_Lock localLock((class CUxx_MS_LockableObject *) &m_Lockable);
// CUxx_MS_CriticalSection cs;
CSingleLock singleLock( (CSyncObject*)&threadlock);
singleLock.Lock();
int count = m_List->GetCount();;
singleLock.Unlock();
return count;
}
//##ModelId=38BB19E5027D
int GetCountNoLock() const
{
return m_List->GetCount();
}
//##ModelId=38BB19E5027C
BOOL IsEmpty() const
{
//CUxx_MS_Lock localLock((class CUxx_MS_LockableObject *) &m_Lockable);
CSingleLock singleLock( (CSyncObject*)&threadlock);
singleLock.Lock();
BOOL flag = m_List->IsEmpty();
singleLock.Unlock();
return flag;
}
//##ModelId=38BB19E50274
BOOL IsEmptyNoLock() const
{
return m_List->IsEmpty();
}
........
}
The way I use this class is
CTypedPtrMap<cuxx_ms_listptrtoptr, cmemmapmgr*,="" cstring*=""> ListOutput;
when I call methods like,
CString* pCStr;
CMemMapMgr* pCommunicationObject;
ListOutput.Lookup(*pCStr, pCommObject), sometimes it shows an error message->
The instruction at ".." referenced memory at " ", The memory could not be read and when I debug the code, it shows the root as
BOOL CSingleLock::Lock(DWORD dwTimeOut /* = INFINITE */)
{
ASSERT(m_pObject != NULL || m_hObject != NULL);
ASSERT(!m_bAcquired);
m_bAcquired = m_pObject->Lock(dwTimeOut);
return m_bAcquired;
}
Can anyone please help me to understand the reason for this crash and how to resolve this one?
Thanks
|
|
|
|
|
[Deleted - posted incorrectly - see next post]
|
|
|
|
|
You really need to format your code using the PRE tags...!
Anyway, in this code:
CString* pCStr;
CMemMapMgr* pCommunicationObject;
ListOutput.Lookup(*pCStr, pCommObject); You are using two uninitialized pointers there, and dereferencing the first one, which is likely the cause of your crash.
Peace!
-=- James If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Avoid driving a vehicle taller than you and remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! DeleteFXPFiles & CheckFavorites (Please rate this post!)
|
|
|
|
|
I have a dialog based app which has a progress bar and other controls. I want to process some stuff in the background moving the progress bar, but not blocking the main process thread. I tried using threads but the child threads cannot move the progresss bar even if i pass the progress bar argument to the child thread.
Does anybody have any ideas??
Another idea could be create a new process and let it run and use intrprocess communication but still the parent process is blocked
I think i am just complicating things because many applications have this functionality
Any ideas would be greatly appreciated.
Kelvin Chikomo
|
|
|
|
|
theprinc wrote: I tried using threads but the child threads cannot move the progresss bar...
Nor should they. The secondary thread(s) should be posting a message back to the primary thread (which owns the progress control) to update the UI.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
How do you post messages back to the primary thread without blocking the primary thread.
Any sample code would help
Kelvi Chikomo
|
|
|
|
|
When you start your second thread, you give it the handle to the window to which it will post messages. Then, to post messages, simply use PostMessage which doesn't block the thread.
|
|
|
|
|
theprinc wrote: How do you post messages...
By using PostMessage() .
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
Say I use the PostThreadMessage() method the primary thread would have to have some sort of a loop to keep reading the messages therefore keeping the primary process busy.
The secondary thread would be sending lots of messages
Kelvin Chikomo
|
|
|
|
|
The primary thread, the one that owns the GUI, has a message queue, and a message pump to process messages in that queue. See here for more.
theprinc wrote: The secondary thread would be sending lots of messages
For just the updating of a progress bar? Even so, it's doubtful you'll exceed the maximum size of the message queue. You might look at using an I/O Completion Port to queue messages to the main GUI thread. See here for an example.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
Thanks dude. I am going to try it using peekMessage() in an MFC environment hope it works
Kelvin Chikomo
|
|
|
|
|
theprinc wrote: I am going to try it using peekMessage() in an MFC environment hope it works
Why? An application's primary thread already has a message pump. No need to reinvent the wheel.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
I dont know how to use the message pump do you have any references
Kelvin Chikomo
|
|
|
|
|
For most applications, there is no need to interface with the message pump, or even the message queue. It's all handled nicely for you. See that worker-thread link I referenced earlier.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
recently, I use the MFC's CSplitterWnd to split main frame as like "-|" with left pane and right pane , and I also split right pane to top sub-pane and bottom sub-pane, but I want to fix the boder bar between left and righ pane to avoid user to size. Has anyone some ideas to do that? thanks in advance.
|
|
|
|
|
|
See the second question here.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|