|
I've some dialogs that I use as child dialogs in a FormView driving them with a TabControl.
My problem is that when dialogs are shown, they doesn't catch events like mouse click, so that
the user cannot handle any control inside the window.
If I switch the windows property from Child to Popup any control works properly but the windows are
not shown correctly within the TabControl.
So.. how can I let all events work fine for child dialogs ?
|
|
|
|
|
My only thought is that the windows are visible, but disabled.
Use Spy++, and check the WS_VISIBLE / WS_DISABLED for the windows involved.
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need contract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
I have a static class I use for caching data. This will now be accessed from multiple threads which means I need to add a CRITICAL_SECTION to make updating the cache thread safe. I now have the problem of who initialises the CRITICAL_SECTION given a static class doesn't have a constructor.
std::map<int,std::string> CMY_CACHE::m_cache_map;
CRITICAL_SECTION CMY_CACHE::m_critical_section;
class CMY_CACHE
{
private:
static std::map<int,std::string> m_cache_map;
static CRITICAL_SECTION m_critical_section;
public:
std::string read(int index)
{
EnterCriticalSection(&m_critical_section);
std::map<int,std::string>::iterator it=m_cache_map.find(index);
if (it==m_cache_map.end())
{
}
LeaveCriticalSection(&m_critical_section);
return(it->second);
}
...
std::string s=CMY_CACHE::read(0);
modified on Friday, October 16, 2009 8:28 AM
|
|
|
|
|
Instead of having all members static, you could use a singleton pattern: it is a design pattern that makes sure your class is created only once. I won't go into much details here but I suggest you google for "Thread safe singleton pattern". Basically, you add a public static function that returns a pointer to your single instance (CMY_CACHE* CMY_CACHE::instance for example).
Once your class is a singleton, you can simply create your critical section in the class constructor. Your read method is no more a static function and you call it this way:
CMY_CACHE::instance()->read(0);
|
|
|
|
|
The quick & dirty (you're warned...) trick: wrap the CRITICAL_SECTION in a struct and do initialization (cleanup) in struct constructor (destructor).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
... or, instead of a singleton, you could write a CRITICAL_SECTION wrapper class.
e.g. something like
class CS : public CRITICAL_SECTION
{
public:
CS( ulong SPINCOUNT = 4000 ) {
#ifdef _DEBUG
::InitializeCriticalSectionEx(this, SPINCOUNT, 0);
#else
::InitializeCriticalSectionEx(this, SPINCOUNT, CRITICAL_SECTION_NO_DEBUG_INFO);
#endif
}
~CS() {
::DeleteCriticalSection(this);
}
};
then use it wherever you used CRITICAL_SECTION.
...cmk
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
- John Carmack
|
|
|
|
|
Anyone know the code for Handling keyboard strokes like enter,delete in TreeCntrl?
|
|
|
|
|
BOOL CTreeCtrlPlus::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_RETURN)
{
TRACE(_T("VK_RETURN\n"));
}
if (pMsg->wParam == VK_DELETE)
{
TRACE(_T("VK_DELETE\n"));
}
}
return CTreeCtrl::PreTranslateMessage(pMsg);
}
In the header file, insert:
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
|
|
|
|
How to show/hide CWebBrowser2 control? the ShowWindow(...) function is not working for the control.
|
|
|
|
|
Are you using OleCreate() to create the browser object?
|
|
|
|
|
I have a project (VS6 C++ MFC) and my 'project.rc' file appears to be corrupted or somehow has missing data - all has been working fine until recently, is there any easy way to recover the missing data?
|
|
|
|
|
Caslen wrote: appears to be corrupted or somehow has missing data
How do you know that? Are you getting an error message?
|
|
|
|
|
Yeah I perhaps should have mentioned that when I try to open the resources for the project in the resource view I get a "Guideline must specify type" message whatever that means. Also I have an older version of the file which has lines missing that I am pretty sure aren't due to any of my edits
|
|
|
|
|
I am writing a multithreaded TCP Server Application(MFC).
I have written simple TCP server earlier n it worked fine. The tutorial I used told that for
multithreaded server I have to use more than one Socket variable and It also told that the server
should spin individual thread for every client.
But I think I am writing wrong code.
Where am I going wrong? any suggestions please.
My Code looks like this:-
class CsockDlg : public CDialog
{
public:
CsockDlg(CWnd* pParent = NULL);
.
.
.
private:
CMySocket m_sListenSocket;
CMySocket m_sConnectSocket;
public:
void OnAccept(void);
void OnConnect(void);
void OnClose(void);
void OnReceive(void);
void OnSend(void);
static UINT ThreadServer(LPVOID pParam);
void TS(void);
};
BOOL CsockDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
.
.
.
int m_iPort = 4000;
m_sListenSocket.Create(m_iPort);
m_sListenSocket.Listen();
return TRUE;
}
void CsockDlg::OnAccept(void)
{
AfxBeginThread(ThreadServer, this);
}
UINT CsockDlg::ThreadServer(LPVOID pParam)
{
CsockDlg* O = (CsockDlg*)pParam;
CMySocket c;
O->m_sListenSocket.Accept(c);
return 0;
}
Future Lies in Present.
Manmohan Bishnoi
|
|
|
|
|
Question: Where did you get that example from?
There are plenty of examples out there that can help setting up a working networking application (with or without multi threading). For some examples using sockets see Winsock FAQ[^].
/M
Future lies in the future.
|
|
|
|
|
Tutorial was only for Simple TCP server.
This is my experimental code.
Future Lies in Present.
Manmohan Bishnoi
|
|
|
|
|
Please have a look at the link I posted, perhaps you can find something that fits your needs. If you want to write a GUI application with networking it could be worth to have a look at event-based examples (e.g. using MFC's CAsyncSocket ) it saves you the hassle of using threads and locks.
Btw, there are other socket libraries than MFC out there:
* Alhem
* Boost
* SharkEngine
* QT
* and many others
Hope it helps!
The past lies in the future
|
|
|
|
|
Calculate factorial of any number less than 10000,but I don't know how to start with? I just want to get an idea, not the source code.
|
|
|
|
|
forPower wrote: Calculate factorial of any number less than 10000
That's a big number to find the factorial of! You won't be able to do it with the existing datatypes, and normal arithmetic techniques. But you could use something like the BigNum[^] library. It is an excellent library and has been around for a while.
FYI, I just calculated the factorial of 10000 online (using BigNum) and the answer is: here[^]
forPower wrote: I just want to get an idea, not the source code.
FYI, BigNum is free of cost and open source (LGPL).
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
Start making space for a lot of digits...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
forPower wrote: Calculate factorial of any number less than 10000,but I don't know how to start with?
Start with 1!.
With standard C , using an (or two three... ) array of (circa) 40000 unsigned char s you may roll you own-hand-crafted computation, anyway I doubt the output will be produced in 1 ms...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
modified on Friday, October 16, 2009 5:16 AM
|
|
|
|
|
Can you calculate factorials on paper? Until you get that much squared away, trying to write code is just going to get in your way.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"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
|
|
|
|
|
0- do you know what a factorial is ?
0.5- did you google/bing about that ?
1- do you know how to calculate factorial on paper ?
2- can you translate that into code ?
2.5- did you even try something ?
anyway, don't use recursion.
This signature was proudly tested on animals.
|
|
|
|
|
Maximilien wrote: 2- can you translate that into code ?
2.5- did you even try something ?
Unfortunately I think that in this specific case, just translating the factorial logic into code simply won't work. If we use the datatypes that are available to us, and assuming that we use a 64 bit unsigned integer, the largest number that it can hold would be barely sufficient to hold the value of 20 factorial. For holding the resultant value of the computation of 40 factorial, there are no datatypes offered by the tools and languages used usually (it would be larger than what an 128 bit integer can hold!)
And the OP wants to find the factorial of not 40, but the factorial of *cough* 10000. The way I know of is to use arbitrary precision arithmetic and the OP didn't know it. He just wanted to know how to get started with it.
However, I do agree with you that he could have done a bit of Googling around.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
well, if the OP cannot even code a simple factorial for small numbers, then defining it for large numbers is secondary.
This signature was proudly tested on animals.
|
|
|
|