Problems creating my own AFX_MODULE_STATE for multiple gui threads

I'm trying to convert a single gui threaded application to use
multiple threads (one for each main window).  I've created my own
CWinThread subclass and use that to spawn new gui threads.  Everything
runs properly until I try to shut down my applications and close my
threads -- various asserts start to fire.  The shutdown of a gui
thread invokes the function AfxEndThread which will call
AfxOleTermOrFreeLib, which eventually calls
COleObjectFactory::RevokeAll, and here is my problem.  RevokeAll will
go through all the class factory objects registered in the module
state's m_factoryList.  Since none of my gui threads have their own
AFX_MODULE_STATE, each thread uses the global AFX_MODULE_STATE, and
thus each thread's class factory objects are stored globally.  Thread
closing then tries to revoke all the class factory objects, even if it
doesn't own it.

To get around this, I tried to install my own AFX_MODULE_STATE object
for each thread by using the macro AFX_MANAGE_STATE before I call
CreateThread so that each thread will only revoke those factory
objects it owns.  I wasn't able to find much documentation on this,
but it seems like the correct approach to take, but the
AFX_MODULE_STATE object, while having constructors, doesn't fully
initialize the object.  Almost all the data members are initialized to
0xcdcdcdcd in the debug mode.  This causes all sorts of problems when
I try to destroy this object since it will attempt to dereference
points because they are not NULL.  For some reason, the global module
state created by MFC is properly initialized, perhaps because it's
created in a section of code that is exempt from the MFC memory
manager and is zero'd out first?  I could initialize all the data
members, but I'm concerned about how future proof this solution would
be with new versions of MFC (I'm currently using Visual Studio 2005)
that may add additional data members.  Is this the appropriate
solution?  Are there other approaches I should consider?


malayshah (1)
6/9/2008 10:30:38 PM
vc.mfc 33608 articles. 0 followers. Follow

0 Replies

Similar Articles

[PageSpeed] 18


Similar Artilces:

Problem shortcuts in Word
Hello, I work with Word 2008. In the beginning there is no problem, but suddenly i have problem with shortcuts. When i want to do "cmd c" it make an other shortcuts same thing for "cmd s", "cmd v" and surly some other. But when i write there is no problem "c" is "c"... If somebody have an idea please help me. Thank you. Unless you indicate your specific update level of Office as well as OS X & describe what the keystrokes *are* doing contrary to what you expect there isn't much we can offer. -- Regards |:>)...

encoding problem in Outlook 2007 importing Outlook 2000 personal folders
I use Outlook 2007 to import the pst file of Outlook 2000. The Chinese characters in the subject became unreadable but it's ok to display in message body. In Outlook 2000, there's no problem to display the Chinese characters in the subject. What's wrong with Outlook 2007? What setttings should I change to fix the problem? Thanks. cyl <> wrote: > I use Outlook 2007 to import the pst file of Outlook 2000. The Chinese > characters in the subject became unreadable but it's ok to display in > message body. In Outlook 2000, there's no problem t...

Outlook 2003 PST problems
I just installed Office 2003 professional on a new computer & am having problems with outlook. I copied my Outlook.pst file into the appropriate directory & although it is recognized the calendar is not working properly. I cannot attach any of the colored labels to my appointments - so everything is pretty much in black & white. I totally uninstalled & reinstalled office... first removing my pst file... but there appears to be an ini file... or something that is retaining some information... does anyone know of a fix for the labels... or how to TOTALLY uninstall office (so I...

How do I link data workbooks to a create a graph?
I am attempting to take workbooks from the last 4 months, each with a daily data sheet, and link Mondays, Tuesdays, Wednesdays, etc. to time of day and staffing levels. I want the final result to be charts that show the relationship between staffing levels, incoming call volume, and time of day. hi Andrea, Many things are possible in Excel & I'd say that you could probably find a way of linking all the workbooks. However, I think any "easier" approach would involve opening each file & copying the data from each sheet in each file to a single sheet in one file (with...

Problem with Authentication
The CRM application was running smooth. But now I can't logging. It ask my credentials and than return a 401.1 error. I had already reinstalled the CRM server but it won't work. I'm accessing it in the same local network. I'm running CRM 3.0 in SBS. Best regards, Erico Hi When you open a Internet explorer and type the name of the CRM server, it prompts for user and password ? Are you logged in with domain credentials ( AD user ) ? If you are, so add url of the crm server in Local intranet. Enable "Automatic logon only in intranet", this is under security,c...

calendar problem
Dear all, I am using both mail and calendar function in outlook 2002. Everything is ok until recently, when I try to make a new appointment or checking any old appointments, an error message "out of memory or resource, try to close some windows..." pop up. The mail function is still ok. Can anyone tell me how can I solve this? I have already installed sp2. The version of office is the professional one with frontpage. Thanks. tp ...

Create a Variable from First 4-5 chars of a existing value ??
In a current table, the values in a particular field are all items like: MD45 Tuesday PM or TX341 Friday AM or FL12 Monday PM other words...2 parts seperated by a space. The first part is always a State Abbrv. followed by either a 2 or 3 char. number. That first part will always be 4-5 characters long (or...everthing before the first Space). I'm needing to create a varible that is the First Part of the existing value.. other words...the variable would need to be (from the above examples)... MD45 or TX341 or FL12 I'm kind of familiar with LEFT command. Would usin...

Multiple e-mails #4
How many e-mails can be sent at once with outlook express Multiple e-mails wrote: || How many e-mails can be sent at once with outlook express This newsgroup is for support of Outlook 97/98/2000/2002/2003 from the Office suite of products. Outlook Express is actually a separate program despite the similar name. For help with your OE questions, try an OE newsgroup such as (for OE 6), or an OE help website such as If you're accessing the Microsoft newsgroups through the MS Product Support Services &...

Vista blue screen problem...please help!
I've seen some other threads, here are the dump files: 'RapidShare: 1-CLICK Web hosting - Easy Filehosting' ( Please, help me out here. -- ceVil It might be better to know at what point the bsod occurs and what the actual err.msg given is "ceVil" <> wrote in message > > I've seen some other threads, here are the dump files: > 'RapidShare: 1-CLICK Web hosting - Easy Filehosting' > (...

problem #4
Hi, I am facing this new problem... i.e a user has installed Office 2003 on win2k prof platform.. whenever she is working on a outlook.. she gets a Microsoft error message... saying to send the report or don't send the report... Usually I have seen this problem in IE... But for outlook it is new to me... after clicking on send or don't send report.. the outlook closes. And there are no IE open..... and if atall it is open.. the IE does not close... Need your help regards, KAH What is logged to the Event Viewer regarding this? Try one of the following already; http://www.howt...

95 and 97 problem
For some unknown reason there is Excel 95 and 97 on this pc.When i double click on an Excel file, the pc defaults to the 95 program (Which incidently doesn't work properly). So my question is how do i get the pc to default to 97. Cheers Craig Craig, Have a look at Windows Help. From Windows 2000 Help (Index under Programs Associating with File Types) To change which program starts when you open a file In My Computer or Windows Explorer, on the View menu, click Folder Options. Click the File Types tab. In the list of file types, click the one you want to change. Click Edit. In Act...

Can not Create cases
I'm having a problem creating cases. Everytime I try to create a new case I get the message Duplicate Record. A record of this type with this name already exists. Please choose a different name and try again. No what I use for the account, title or subject. Even Log Error Category: None Event ID 3 Description MSCRM Platform Error Report: ---------------------------------------------------------------------------- ---------------------------- Error: The statement has been terminated. Error Message: The statement has been terminated. Error Details: Details on this error have not be...

Can an activity be created and managed by a Team Member?
Hello, I was thinking that TM where allowed to create and manage activities because in the Security Team Member Group the “Create New Proposal or Activity” box is checked. But when trying it, a problem occurred. They are allowed to fill the Summary Information for a new activity, but after clicking on the save button, nothing appear in the Proposal and Actities view, neither in the project Center. Looking at it from an administrator account the activities do exist but are not visible for the TM who created them. So what’s the problem? ...

Date problem
I can't believe there's no post on this, but I can't find it. I've tried the solutions I could find (see below) and still get the error: "The expression is typed incorrectly or it is too complex to be evaluated. For example....Try simplifying...." I have a date field, formatted as Date/Time, General Date, default Value = Now(). I like having the date and the time - in case we need it. I want to run a report on calls taken just for one day. I have CallDate: CallDateAndTime in my query, with "criteria" as Between ([Forms]![frmReports]![txtStartDate]) A...

sync problems
I have all of my info on an HP Ipac. I had to reformat the hard drive and I did not make a back-up file. I am trying to move everything back to the computer but it says there is an error with syncing it. How can I move everything from the PDA back to Outlook again? Please help- thanks ...

Office 2007 - HELP
I have used Word for many years and love it - not too thrilled with the changes in Office 2007, but my bigger issue is with Publisher 2007. I have an image that I have used in Word just fine - meaning, the on screen colors are correct and when printed the colors are correct. Someone sent me a Publisher file and asked me to add the image - I did this - now the image is messed up - the colors are correct on screen, but when printed FROM MY computer the image colors are all wrong - but if I transport the file to a different computer it prints fine I have reinstalled Office - no good Any id...

Installation Problem!!
I am having a problem installing MSCRM 1.2. My configuration consists of a Domain Controller running Win 2000 Server SP4 . I am trying to install MSCRM on a member of the domain running Windows 2000 Server SP4. There is a DNS Server on the DC which is integrated with AD, and a SQL Server 2000 running on the Win 2K machine. The install errors out when CRM creates the root business with the message: Setup was unable to install Microsoft CRM Server. Setup was unable to provision your organization. Setup was unable to create the root business. The configuration of ASP.NET seems to be ok, the pr...

Extender-Create a new data entry window
Is it possible to create a new extender form or window (not sure of the terminology) to enter data into Dynamics? Specifically the Sales Forecast Window in Manufacturing is terrible for entering data, everytime you move to the right, it the scrolling window jumps back to the top and you have to find the item again. Anyway, I would like a new window to enter a sales forecast, is this possible? thanks -- Doug Unfortunately Extender data is stored in Extender tables and cannot be stored in the Sales Forecast tables. I agree with you that the data entry screen is horrible. I am tal...

Problems Creating a disclaimer in Exchange 2003
I am trying to create a server based disclaimer that will stamp all of my smtp emails going to the internet. I have been following KB article 317680 with no luck. I get an error like the one below. Binding Display Name Specified: smtpscriptinghost ** Registration Failed ** Err.Number (HRESULT) = 0x1AD Err.Description = ActiveX component can't create object ProgID = cdo.ss_smtponarrival COM Category = {FF3CAA23-00B9-11d2-9DFB-00C04FA322BA} Corresponding Event = onarrival ** Have you registered your sink COM class on this machine? I am puttin...

Resource editor problems
Hello all, Under VC++ 7.1... Please consider these two lines: IDC_ARROW_ADD_CANCEL DISCARDABLE "res\\cur00004.cur" IDC_ARROW_ADD_CANCEL CURSOR DISCARDABLE "res\\cur00004.cur" The second is a hand-edited change to the first. Both will compile just fine in the resource compiler. However, after I use a text editor to make this change, I cannot open the .rc file in the resource editor. The resource editor issues the following error open attempting to open the .rc file: error RC2135 : file not found: CURSOR Can anyone shed light on what's going on here? Thanks, Dave ...

Directory Replication Problem #2
Hi, recently my Exchange Server directory database receives changes from other servers but does not send out its own changes. Check from the knowledge base, to correct the USN discrepancy need to use Authrest.exe (need to amke changes for about 100+ users). Does anybody know where to get this file 'Authrest.exe' for exchange server 5.5? Exchange server 5.5 CD only provide this file for ver.4.0. Have anyone use it before? Regards, "Sharon Tan" <> wrote: >Hi, recently my Exchange Server directory database >receives changes from ot...

Cell Format
I have a spreadsheet with cells that I'm trying to type the date into. I type in the date exactly like this: 09/26/03. When I hit "enter" MS Excel displays "37890" in the cell. No matter what I do I can't the cell to show: 09/26/03. I think that somehow I need to "strip" the cell of what it's original format is, but I can't figure out how. I try to use the Date option in the format cell screen but it doesn't work. Curtis I tried this and it didn't work. I also tried the "Text to columns" feature. No success. >...

User Defined Variables in MS query cause a problem to import data
If I use user defined variables in MS query to import data into excel sheet, the query executes but no data gets imported into the excel sheet. If I get rid of the variable the results can be imported into the Excel sheet. ...

outlook web access redirect problem
hi, I have been trying to redirect outlook web access (OWA) from the IIS root folder to the /exchange folder. I have followed the instructions on going into the web site and redirecting to a folder but I just get the following URL when I browse to the root of my webserver : http://webmail/exchange/exchange - it's like it's doubling up somehow. I have it set to : A redirection to a URL redirect to: /exchange client will be sent to: A directory below URL entered I just can't work it out... any ideas... cheers Baronne Which instructions did you follow? I wrote the below articl...

Multiple loans serviced by single provider
I am a new user of Money and am trying to set up my student loans. Like most government-backed education loan portfolios, there are multiple loans with different terms, variable rates, etc serviced with one payment to a single service provider -- Sallie Mae. I send Sallie Mae one check each month. I have set up each loan in Money (there are four) as a separate account thinking I could 'split' the single payment from my checking account into four pieces. But Money will not give me the option to split checking transaction into multiple loan payments. I have the option in the initi...