|
Seems as a bug in atlframe.h:
The CUpdateUIBase message map entry for WM_INITMENUPOPUP and its message handler are #ifdef -d off for Windows CE. Remove these #ifdef s and menu ui updating works.
Note: AtlIsOldWindows() needs to be modified to take Windows CE version numbering into account, or a debug break will occur there in debug builds after the #ifdef removal.
--
Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so. (Douglas Adams)
|
|
|
|
|
|
|
You should use basic_string::replace(). MSDN has a sample on how to use it.
|
|
|
|
|
// Copyright(c) 2002 by Kolya Kosenko
void replace_string(string &str, const char *search, const char *repl_value)
{
string::size_type size = char_traits<char>().length(search);
string::size_type repl_value_size = char_traits<char>().length(repl_value);
string::size_type replace_pos = 0;
if(size) {
do {
replace_pos = str.find(search, replace_pos);
if(replace_pos == string::npos) break;
str.replace(replace_pos, size, repl_value);
replace_pos += repl_value_size;
}while(true);
}
}
|
|
|
|
|
I did some docking windows and add some buttons in them. But after when I clicked the button , nothing happened. why?
the is message loop.
DECLARE_WND_CLASS(_T("CSearchDockingWindow"))
BEGIN_MSG_MAP(thisClass)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
COMMAND_ID_HANDLER(ID_SEARCH_PLACE_BTN, OnPlaceBtn)
COMMAND_ID_HANDLER(ID_SEARCH_ATTRIBUTE_BTN, OnAttributeBtn)
COMMAND_ID_HANDLER(ID_SEARCH_START_BTN, OnSearchStartBtn)
COMMAND_ID_HANDLER(ID_SEARCH_STOP_BTN, OnSearchStopBtn)
CHAIN_MSG_MAP(baseClass)
END_MSG_MAP()
LRESULT OnAttributeBtn(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CSearchAttributeDlg dlg;
dlg.DoModal();
return 0;
}
Please help me, Thank you .
|
|
|
|
|
|
Thank you very much, I finished it. Now it run good.
Freehawk
|
|
|
|
|
I want to call a MFC dialog from the docking window in a WTL project, but it can not be compiled. the message is :
error C2504: 'CDialog' : is not defined.
how to solute it?
Thank you
|
|
|
|
|
You have to add a MFC support to a WTL project. Just create a new WTL project using the wizard and check a checkbox 'Add MFC support' and see what includes were added to stdafx.h file.
|
|
|
|
|
Thank you.
With Daniel's help, I wrote a program in which I added a dialog into a docking window.
Freehawk
|
|
|
|
|
Hello.
Thank you for this reply.
BTW, where is the checkbox 'Add MFC support' ?
I created a new WTL project but not the check box displayed.
-Freehawk
|
|
|
|
|
Ooops! Sorry, my fault. It was in WTL wizard that was supplied with WTL 3.0.
|
|
|
|
|
Hello.
Thank you for the reply.
Now I am using WTL7.1, is there anything like "Add MFC support"?
-Freehawk
|
|
|
|
|
If you are using VC7 create a test ATL project, go to application settings (part of the project wizard), uncheck Attributed checkbox, select DLL server type, check Support MFC checkbox, look at stdafx.h file and copy all afx*.h files to your projects.
It should do it.
Good luck,
Igor.
|
|
|
|
|
Hello
I did a test WTL project as the following
1.Open VC.net 2003 and create a new project(select "ATL/WTL Application Wizard")
but I can not find Attributed checkbox.where is it?
-Freehawk
|
|
|
|
|
Not ATL/WTL project, select a template called "ATL Project". Click OK. You'll see "ATL Project Wizard" dialog. By default an "Overview" tab is opened, switch to "Application Settings" tab.
There you'll find it. (I'm also using VC 2003, I just did it).
Good luck,
Igor.
|
|
|
|
|
Hello.
Thank you for reply so fast.
I will try it. In fact, I am using VC6.0 and WTL7.1 to make my project. And in the WTL project, I want to use MFC, If done as you said, can it be realized?
-Freehawk
|
|
|
|
|
In VC6 you should select ATL COM project type, click OK. On the next page select DLL server type, check Support MFC checkbox, finish creating a project and then look at stdafx.h file.
Good luck,
Igor.
|
|
|
|
|
Hi,
Can anyone tell me if there is a limit of 2^15 (32768) items that can be sorted in a list using the list function sort()?
I am trying the following code in Visual C++ 6 on Windows 2000.
std::list<int> TestList;
for (int i=0; i<40000; i++)
TestList.push_back(i);
int nSize = TestList.size();
test.sort();
int nSize2 = TestList.size();
nSize is 40000.
nSize2 is 7232.
The difference between the two values is always 32768.
Less than 32768 values sorts fine.
NOTE: max_size() returns a value of > 100000000.
I could not find any information that mentions this limit but it is clearly there.
Can anyone suggest an alternative?
|
|
|
|
|
It looks like there is a bug in the list sort routine which ships with VC 6.0.
Looking at the source in <list>, it appears that the internal array used to process the merge sorts is not being handled properly when the array is full.
You might be able to find a fix for this by getting an upgrade to the STL that you use. This isn't a bad idea, as there are a number of problems with the STL that ships with VC 6.0.
For a quick fix, you could patch the <list> header file so that the sort works correctly. Or you could write your own sort routine which fixes the problem.
(just glancing at it, it appears that the sort could be fixed by changing the following sequence:
<br />
if (_I == _MAXN)<br />
_A[_I].merge(_X);<br />
else<br />
{_A[_I].swap(_X);<br />
if (_I == _N)<br />
++N; }}<br />
to the following:
<br />
if (_I == _MAXN)<br />
_A[_I].merge(_X);<br />
else<br />
_A[_I].swap(_X);<br />
if (_I == _N)<br />
++N; }<br />
Note: I only briefly tested this, but it appears to work.
The other choice (if you are going change <list>) is to increase the const _MAXN to a larger number, so that the temporary array can fit more elements. Each increase of this number doubles the size of the list that can be sorted. By setting this to 32, it should be able to handle any size list that you could create.
Best regards,
John
|
|
|
|
|
This is a known bug. See the following page for how to patch your VC6 STL headers for a number of known bugs:
http://www.dinkumware.com/vc_fixes.html[^]
In particular, see the "Fix to <list>" section.
- Mike
|
|
|
|
|
I have developped a add-in explorer bar for Internet Explorer. In the DllRegisterServer() function I have also entering the class-id of the toolbar to the registry key...
HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/ Toolbar/{Toolbar Class ID}
But the toolbar is not visible in the Internet Explorer right after registration. After registering the dll, when I open a new instance of IE the toolbar doesn't appears by default. I have to explicitely check going to IE's View/Toolbar menu thereafter. But with many other third party toolbars like Yahoo, Google etc. the toolbar appears by default for the first time.
Can any one pls tell me where am I really missing out? Is there any other registry entry needed to make the toolbar default visible? I have already compared with Google toolbar registry entries with that of mine. They are almost same.Or do I have code any thing exclusive for that?
Thanx in advance for a positive reply from any friend in need around the globe.
|
|
|
|
|
|
I am currently attempting to localize a dialog for Japanese. This dialog inherits off of CAxDialogImpl. The seemingly simple way to localize this was to set the _Module.hinstResource to our language DLL. This seems to find the dialog and seems to load it. It does call _DialogSplitHelper::SplitDialogTemplate which finds all the controls and builds the template. However when it proceeds to call DialogBoxIndirectParam it returns a -1. Called GetLastError and of course it returns "Operation Completed Successfully".
Then I tried to modify the dialog to use our internal resources. I did that by overriding DoModal and creating a Modal Pump. This allows me to use our internal dialog creation tools that are designed to load from our Japanese language DLL and if that fails load from the embedded English resources. However the Japanese dialog fails to load, and then StartWindowProc asserts when trying to load the English dialog. This is because _Module.ExtractCreateWndData() returns a NULL. (NOTE: I do AddCreateWndData() in the DoModal call). Also if set the application to load English only, then this dialog still doesn't come up but does not assert in StartWindowProc.
Anybody seen this before and solved it? Anybody have any articles on localizing CAxDialogImpl()?
All help is helpful, and appreciated...
Thanks,
Brian
If you start a fire for a man, he will be warm for a day. If you start that same man on fire, he will be warm for the rest of his life.
|
|
|
|