|
if your lparam is a ptr to a data structure, may be you can store the hitem in it when you create your listview items
|
|
|
|
|
Do you know how should i add MFC support to ATL project?
When i try to use #include <afxwin.h> in stdafx.h and i declare a CString in a method i get the following:
Linking...
mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in a.obj
mfcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in a.obj; second definition ignored
Creating library Debug/a.lib and object Debug/a.exp
LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library
Debug/a.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
I've defined _AFXDLL and _USRDLL in the project settings and still doesn't work.
rechi
|
|
|
|
|
Here is how you fix it
1. Add a CWinApp derived class add InitIntance and ExitInstance functions.
2. Define _AFXDLL, _USRDLL
3. Move code from DllMain to appropriate InitInstance or ExitInstance method
4. Remove DllMain
Build and it will compile
|
|
|
|
|
Rama Krishna wrote:
1. Add a CWinApp derived class add InitIntance and ExitInstance functions.
2. Define _AFXDLL, _USRDLL
3. Move code from DllMain to appropriate InitInstance or ExitInstance method
4. Remove DllMain
Also set the linker option to link with MFC statically or dynamically
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Buy it, read it and admire me
|
|
|
|
|
Nish - Native CPian wrote:
Also set the linker option to link with MFC statically or dynamically
Defining _AFXDLL sets dynamic link.
|
|
|
|
|
Rama Krishna wrote:
Defining _AFXDLL sets dynamic link.
Woah! I didn't know that!
Thanks for these little snips of info Rama
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Buy it, read it and admire me
|
|
|
|
|
Hi everyone. I have a dialog with 2 combo boxes, one is for setting what kind of data which will be put into the second combo box. For example, "String" will set the data box into a dropdown were the user can type in a string, or "boolean", which would set the data box into a drop list (where there are two entires, "Yes" or "No". I want to be able to do this dynamically, as the user selects either "String" or "boolean".
I tried the following to set the data combobox from a dropdown to a drop list, with the dropdown already successfully created by default in the resource editor. When this code is run, the combo box font changed, the size of the box changed, and I could not set the drop down width to anything, and the width would be zero. The combobox did change to droplist though.
Is it possible to change the combobox from sropdown to drop list dynamically? Is there a correct way to do it, so I don't have to use an extra combobox? Thanks in advance for any help!
<br />
CRect rect;<br />
pFrom->GetWindowRect(rect);<br />
ScreenToClient(rect);<br />
<br />
pFrom->DestroyWindow();<br />
pFrom->Create(CBS_DROPDOWNLIST, rect, this, IDC_CBO_DATA);<br />
pFrom->AddString("Yes");<br />
pFrom->AddString("No");<br />
pFrom->SetCurSel(0);<br />
pFrom->ShowWindow(TRUE);<br />
pFrom->EnableWindow(TRUE);<br />
pFrom->SetDroppedWidth(70);<br />
<br />
|
|
|
|
|
|
if you cannot change the style workaround is have to two controls drowndown and droplist in the same place in the dialog and show the one you need
|
|
|
|
|
You cannot change this style at runtime. You have the right idea: delete the combobox and create another with the appropriate style. First save all the relevant attributes of the original combo and stuff them into the new one when it's ready. I used the following code to change from DROPDOWN to DROPLIST:
DWORD dwStyle = m_Combo.GetStyle();
DWORD dwExStyle = m_Combo.GetExStyle();
int nID = m_Combo.GetDlgCtrlID();
CWnd *pPrevWindow = m_Combo.GetNextWindow(GW_HWNDPREV);
CWnd *pParentWnd = m_Combo.GetParent();
CFont *pFont = m_Combo.GetFont();
m_Combo.GetWindowRect(rect);
pParentWnd->ScreenToClient(rect);
m_Combo.DestroyWindow();
dwStyle &= ~CBS_DROPDOWN;
dwStyle |= CBS_DROPDOWNLIST;
m_Combo.CreateEx(dwExStyle, "COMBOBOX", "", dwStyle, rect, pParentWnd, nID);
m_Combo.SetFont(pFont, FALSE);
m_Combo.SetWindowPos(pPrevWindow, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
Hope this helps,
Regards,
Phil
|
|
|
|
|
Thanks! Your code worked great, except the dropdown height was not preserved, and I could not change it via SetDroppedWidth(). So the user could not see the "Yes" and "No" I put in the combobox. The font and such were preserved. Why couldn't I change the dropped width?
|
|
|
|
|
I am using CWebBrowser wrapper class to simulate web browser in my dialog based application. I am getting the browser. But menu bar and status bars are not visible. Is there any way to make it visible. I used setmenubar and other set functions to do that. But i am not getting the results. Please help.
sundar
|
|
|
|
|
how to modify the version info in the resource file, through vc7.net addin?
I want to auto increase the build version when building.
c++ : my dream
|
|
|
|
|
|
thanks, let me see...
c++ : my dream
|
|
|
|
|
How could I know where my app program starting (absolute path)
Thank you so much for your kindness
|
|
|
|
|
try
GetCurrentDirectory ()
R_Renjith The True CP ian
|
|
|
|
|
GetModuleFileName
Cheers,
Fredrik
<right>Sonork ID: 100.11430:PhatBoy
'It is so much simpler to bury reality than it is to dispose of dreams.'
- Don Delillo, Americana
|
|
|
|
|
This will not give the current directory. This will give the full path of the executable which is not same as the current directory
|
|
|
|
|
He did not ask for the current directory, he wanted to know where his application starts (runs), and that is what I answered to.
Cheers,
Fredrik
<right>Sonork ID: 100.11430:PhatBoy
'It is so much simpler to bury reality than it is to dispose of dreams.'
- Don Delillo, Americana
|
|
|
|
|
this is how i do it:
char curdir[_MAX_PATH];
if( _getcwd( curdir, _MAX_PATH ) == NULL )
{ AfxMessageBox("Unable to determine the current working directory");
bInitSuccessful = FALSE; }
m_strWorkingPath = (CString)curdir + "\\";
is GetModuleFileName() a better method?
i notice it returns the full path and executable..
-dz
|
|
|
|
|
GetModuleFileName can be used to retrieve the path of the running application, whereas _getcwd (and GetCurrentDirectory) can be used to retrieve the current directory.
The current working directory need _not_ be the same as the location of the running application.
Cheers,
Fredrik
<right>Sonork ID: 100.11430:PhatBoy
'It is so much simpler to bury reality than it is to dispose of dreams.'
- Don Delillo, Americana
|
|
|
|
|
Once you have the path of the running application, you can use _splitpath() and related functions.
|
|
|
|
|
wow, a function like this does exist there. What I did is:
TCHAR szBuff[_MAX_PATH];
::GetModuleFileName(AfxGetInstanceHandle(), szBuff, _MAX_PATH);
char ch = '\\';
char * pdest = strrchr(szBuff, ch);
to extract the application name from its full path.
|
|
|
|
|
or, you could use _splitpath.
-c
Cheap Oil. It's worth it!
|
|
|
|