|
VCProgrammer wrote: char Label[256]="";char FS[256]="";
Since you are using Unicode:
TCHAR Label[256] = _T("");
TCHAR FS[256] = _T("");
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
Hi,
How to get the current style of ListView control at runtime and what message i need to pass to fetch the stle of List control.
Please reply me.
|
|
|
|
|
Can you tell us what exactly you want to do ??
I mean why you need the styles??
Regards,
Sandip.
|
|
|
|
|
Hi,
The Following styles are possible for ListView control
* LV_VIEW_DETAILS (Report)
* LV_VIEW_ICON (icon)
* LV_VIEW_LIST(list)
* LV_VIEW_SMALLICON
* LV_VIEW_TILE
i need to get the style of ListView control like listView stye as Report or icon or list. For that which message i need to send to fetch the style of List control.
i want to change the style of the ListView control according to user choice at runtime.
|
|
|
|
|
You can use CListCtrl member function GetView() to retrieve the view type.
If you are not using MFC you can pass LVM_GETVIEW message. check this link for details.
LVM_GETVIEW[^]
Regards,
Sandip.
|
|
|
|
|
If i am using that it throwing the Error at complie time itself.
"error C2065: 'LVM_GETVIEW' : undeclared identifier"
|
|
|
|
|
did you include
#include "commctrl.h"
I hope it helps.
Regards,
Sandip.
|
|
|
|
|
Hi,
After i include "commctrl.h", still it throwing the same error. whether i need to inlcude any dll for that?
|
|
|
|
|
Bernaad wrote: How to get the current style of ListView control at runtime...
By calling GetWindowLong(hWnd, GWL_STYLE) .
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
get this problem when trying to set a break point and debug with F10 in my code.
Any idea why this happens?
Any help will be appriciated.
Thanks
|
|
|
|
|
Where should I delete Dlg
If I delete in the MainFrame::~MainFrame(), it is giving following error
Unhandled exception at 0x006d7074 in ang.exe:0xC0000005
Access violation reading location 0xcdcdcdcd
LRESULT MainFrm::OnStart(WPARAM wParam, LPARAM lParam)
{
CString strPrgDlgTitle;
THREADSTRUCT_MF *_param = new THREADSTRUCT_MF;
_param->_this = this;
Dlg= new CDlg( this ,iMaxVal,iVal,str);
AfxBeginThread (StartProgThread, _param);
}
UINT MainFrm::StartProgThread (LPVOID param)
{
THREADSTRUCT_MF* ts = (THREADSTRUCT_MF*)param;
ts->_this->Dlg->DoModal();
return 1;
}
|
|
|
|
|
i'd delete it in the MainFrm destructor
and, i'd initialize Dlg to NULL in the constructor, and i'd make sure i checked that Dlg wasn't NULL before i tried doing anything with it anywhere else.
|
|
|
|
|
ptr_Electron wrote: Unhandled exception at 0x006d7074 in ang.exe:0xC0000005
Access violation reading location 0xcdcdcdcd
Have you used the debugger to step through the code to find the offending statement(s)?
ptr_Electron wrote: ts->_this->Dlg->DoModal();
It's not a good idea for a secondary thread to operate directly on a UI component owned by another thread. What you have looks as though it would block the primary thread.
"Love people and use things, not love things and use people." - Unknown
"The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch
|
|
|
|
|
the crash is @ delete dlg;
|
|
|
|
|
I've a SDI project where View class is derived from
CFormView.
I need to change the form of the View on the fly in
order to show a different form for each application
status.
Is it possible to do that ? How ?
Thanks a lot !
|
|
|
|
|
I will suggest you to reconsider your design.
Having multiple views for SDI and switching between them i don't think is advisable.
Regards,
Sandip.
|
|
|
|
|
|
|
hi all,
Whats the best way to simplyfy this function?
LRESULT CMainDlg::OnInstall(WORD , WORD wID, HWND , BOOL& )
{
DWORD BufferSize, Size, Type;
BufferSize = TOTALBYTES;
PPERF_DATA_BLOCK PerfData = (PPERF_DATA_BLOCK) malloc( BufferSize );
string LaunchInstaller;
string InstallFolder;
CAtlString StrTable;
TCHAR tcItemText[MAXBYTES];
StrTable.LoadStringA(IDS_ServiceRegEntry);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_LongProjectName);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_ServiceParam);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
StrTable.LoadStringA(IDS_MANAGEKEY);
LaunchInstaller.append(StrTable.GetString());
if(UpdateList.GetItemText(Select, tcItemText, MAXBYTES))
{
LaunchInstaller.append("\\");
LaunchInstaller.append(tcItemText);
InstallFolder = tcItemText;
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LaunchInstaller.c_str(), REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,&Regentry);
if (lResult == ERROR_SUCCESS)
{
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEINSTALL);
lResult = RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwareInstaller), &Size);
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEFILE);
RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwarePath), &Size);
if(lResult == ERROR_SUCCESS)
{
Path = SoftwarePath;
InstallFolder = SoftwareInstaller;
if(!(Path.empty()))
{
ExecuteInstaller(Path, InstallFolder);
}
}
RegCloseKey(Regentry);
Regentry = NULL;
}
else
{
LaunchInstaller = "";
StrTable.LoadStringA(IDS_ServiceRegEntry);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_LongProjectName);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_ServiceParam);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
StrTable.LoadStringA(IDS_RERITEKEY);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
LaunchInstaller.append(tcItemText);
InstallFolder = tcItemText;
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LaunchInstaller.c_str(), REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,&Regentry);
if (lResult == ERROR_SUCCESS)
{
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEINSTALL);
lResult = RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwareInstaller), &Size);
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEFILE);
RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwarePath), &Size);
if(lResult == ERROR_SUCCESS)
{
Path = SoftwarePath;
InstallFolder = SoftwareInstaller;
if(!(Path.empty()))
{
ExecuteInstaller(Path, InstallFolder);
}
}
RegCloseKey(Regentry);
Regentry = NULL;
}
else
{
LaunchInstaller = "";
StrTable.LoadStringA(IDS_ServiceRegEntry);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_LongProjectName);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_ServiceParam);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
StrTable.LoadStringA(IDS_RERITEASIANKEY);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
LaunchInstaller.append(tcItemText);
InstallFolder = tcItemText;
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LaunchInstaller.c_str(), REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,&Regentry);
if (lResult == ERROR_SUCCESS)
{
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEINSTALL);
lResult = RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwareInstaller), &Size);
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEFILE);
RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwarePath), &Size);
if(lResult == ERROR_SUCCESS)
{
Path = SoftwarePath;
InstallFolder = SoftwareInstaller;
if(!(Path.empty()))
{
ExecuteInstaller(Path, InstallFolder);
}
}
RegCloseKey(Regentry);
Regentry = NULL;
}
else
{
LaunchInstaller = "";
StrTable.LoadStringA(IDS_ServiceRegEntry);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_LongProjectName);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_ServiceParam);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
StrTable.LoadStringA(IDS_RERITECHINAKEY);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
LaunchInstaller.append(tcItemText);
InstallFolder = tcItemText;
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LaunchInstaller.c_str(), REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,&Regentry);
if (lResult == ERROR_SUCCESS)
{
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEINSTALL);
lResult = RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwareInstaller), &Size);
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEFILE);
RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<LPBYTE>(SoftwarePath), &Size);
if(lResult == ERROR_SUCCESS)
{
Path = SoftwarePath;
InstallFolder = SoftwareInstaller;
if(!(Path.empty()))
{
ExecuteInstaller(Path, InstallFolder);
}
}
RegCloseKey(Regentry);
Regentry = NULL;
}
}
}
}
}
else
{
ATL::CString str;
str.Format ( _T("Please choose an item to install"));
MessageBox ( str, _T("Redmap Update Manager"), MB_ICONWARNING );
}
free( PerfData );
return 0;
}
Thanks,
Jayjay
|
|
|
|
|
Rewriting it from scratch?
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]
|
|
|
|
|
|
monsieur_jj wrote: Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEINSTALL);
lResult = RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<lpbyte>(SoftwareInstaller), &Size);
Size = BufferSize;
StrTable.LoadStringA(IDS_UPDATEFILE);
RMRegQueryValueEx(Regentry, StrTable.GetString(), NULL, &Type, reinterpret_cast<lpbyte>(SoftwarePath), &Size);
if(lResult == ERROR_SUCCESS)
{
Path = SoftwarePath;
InstallFolder = SoftwareInstaller;
if(!(Path.empty()))
{
ExecuteInstaller(Path, InstallFolder);
}
}
RegCloseKey(Regentry);
Regentry = NULL;
You can put these bunch of statements in some function and pass the parameters appropriately instead of repeating same code everywhere.
monsieur_jj wrote: LaunchInstaller = "";
StrTable.LoadStringA(IDS_ServiceRegEntry);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_LongProjectName);
LaunchInstaller.append(StrTable.GetString());
StrTable.LoadStringA(IDS_ServiceParam);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
StrTable.LoadStringA(IDS_RERITEKEY);
LaunchInstaller.append(StrTable.GetString());
LaunchInstaller.append("\\");
LaunchInstaller.append(tcItemText);
I can also see the above statements repeated you can have function for this as well.
I think that should simplify your code considerably.
I hope it helps..
Regards,
Sandip.
|
|
|
|
|
5!
How patiently you've waded through that huge pile of code.
Many are stubborn in pursuit of the path they have chosen, few in pursuit of the goal - Friedrich Nietzsche
.·´¯`·->Rajesh<-·´¯`·.
[Microsoft MVP - Visual C++]
|
|
|
|
|
Rajesh R Subramanian wrote: 5!
Thanks Rajesh
Regards,
Sandip.
|
|
|
|
|
If the code is OK, and you tested it, that you are sure it is with no bug,etc
then you can simplify it this way :
1-create a new function (you can put it in a separate file) and move your code there :
LRESULT doBigThings(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
or may be :
LRESULT doBigThings(CMainDlg* pDlg,WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
if the code access some members of the Dlg, something I do not want to verify by myself by looking at that source code.
2-change CMainDlg::OnInstall to :
LRESULT CMainDlg::OnInstall(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
return doBigThings(wNotifyCode,wID,hWndCtl,bHandled);
}
Thus try to forget what is inside doBigThings, just look at maindlg.cpp then conclude to yourself :
OK I have good, fucntionning and very simple simplified code, now I have to move forward.
Of course unless the given source code is not yours, and that only you would like to confirm some personal opinion when you first looked at that someon'else code, by seeing our own reaction at it.
Because that case I can show you what is worse.
Our Philosophy, Mohammed Baqir Al Sadr
|
|
|
|
|