|
CEdit m_MyEditControl;
CString m_csEditControlText;
// fill in edit field immediately, bypassing dialog's UpdateData call...
m_MyEditControl.SetWindowText(m_csEditControlText);
|
|
|
|
|
check msdn for GetWindowText().
suhredayan There is no spoon.
|
|
|
|
|
I tried to use it b4 but cant extract the text coz its return type is void
|
|
|
|
|
reenacutie wrote:
I tried to use it b4 but cant extract the text coz its return type is void
Just curious to know, Where you got the information that the GetWindowText() function will return the edit text ?
suhredayan There is no spoon.
|
|
|
|
|
void CWnd::GetWindowTest( CString& s );
well duh ( sorry, it's 3:00 am, and I'm not asleep ), you pass a reference to a CString to GetWindowText...
CString myString;
MyEditBox.GetWindowText( myString );
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
As Maximilien said, you give the GetWindowText() a String, and it will fill it for you.
As for getting the right variable to call GetWindowText() on, you can use the ClassWizard to make a so called Control Variable for you. Thats a variable of the Type of your control (probably CEdit) and you can use it without resorting to the complicated and confused UpdateWindow()-stuff.
You just need to set one hook in the Class Wizard.
"We trained hard, but it seemed that every time we were beginning to form up into teams we would be reorganised. I was to learn later in life that we tend to meet any new situation by reorganising: and a wonderful method it can be for creating the illusion of progress, while producing confusion, inefficiency and demoralisation."
-- Caius Petronius, Roman Consul, 66 A.D.
|
|
|
|
|
I have the following code adding to a CListCtl on a dialog box named m_cList, but for some reason the first element I add doesn't show up:
<br />
LRESULT CRTFParseTest1Dlg::OnCreateListGroup(WPARAM wParam, LPARAM lParam)<br />
{<br />
CStringArray sa,<br />
sa1;<br />
CString sFormat;<br />
<br />
for(int a(0); a < 3; a++) {<br />
sFormat.Format("Column %d", a);<br />
sa.Add(sFormat);<br />
}<br />
InsertColumns(sa);<br />
sa.RemoveAll();<br />
<br />
sa.Add("Item");<br />
for(int b(0); b < 5; b++) {<br />
sFormat.Format("Group %d", b);<br />
AddListGroup(b, sFormat);<br />
<br />
for(int b_0(0); b_0 < 2; b_0++) {<br />
sa[0].Format("%d:%d", b,b_0);<br />
AddItemToGroup(b_0, sa, b);<br />
}<br />
}<br />
<br />
return 0;<br />
}<br />
<br />
<br />
LRESULT CRTFParseTest1Dlg::AddListGroup(int id, CString sTitle)<br />
{<br />
USES_CONVERSION;<br />
<br />
if(!m_cList.IsGroupViewEnabled()) {<br />
if(m_cList.EnableGroupView(TRUE) == -1 || !m_cList.IsGroupViewEnabled()) {<br />
TRACE("==>CParseTest1Dlg::AddListGroup { Could not enable list grouping }\n");<br />
return -1;<br />
}<br />
}<br />
<br />
LVGROUP lvg;<br />
ZeroMemory(&lvg, sizeof(lvg));<br />
<br />
lvg.cbSize = sizeof(LVGROUP);<br />
lvg.mask = LVGF_GROUPID | LVGF_HEADER | LVGF_STATE;<br />
lvg.pszHeader = A2W(sTitle);<br />
lvg.cchHeader = sTitle.GetLength();<br />
lvg.iGroupId = id;<br />
lvg.stateMask = LVGS_NORMAL;<br />
lvg.state = LVGS_NORMAL;<br />
<br />
return m_cList.InsertGroup(-1, &lvg);<br />
}<br />
<br />
LRESULT CRTFParseTest1Dlg::AddItemToGroup(int id, CStringArray &sColumnText, int iGroupId)<br />
{<br />
int iRes = m_cList.InsertItem(id, sColumnText[0]);<br />
<br />
if(iRes >= 0) {<br />
iRes = TRUE;<br />
for(int i(1); i < sColumnText.GetSize() && iRes != FALSE; i++) {<br />
iRes = m_cList.SetItemText(id, i, sColumnText[i]);<br />
}<br />
<br />
if(iRes != FALSE && iGroupId != -1) {<br />
LVITEM lvi;<br />
lvi.mask = LVIF_GROUPID;<br />
lvi.iGroupId = iGroupId;<br />
lvi.iItem = i;<br />
<br />
iRes = m_cList.SetItem(&lvi);<br />
}<br />
}<br />
return iRes;<br />
}<br />
<br />
bool CRTFParseTest1Dlg::InsertColumns(CStringArray &sColumnTitles)<br />
{<br />
int iRes(0);<br />
for(int i(0); i < sColumnTitles.GetSize() && iRes!=-1; i++) {<br />
iRes = m_cList.InsertColumn(i, sColumnTitles[i], LVCFMT_LEFT, 100);<br />
}<br />
return (iRes != -1);<br />
}<br />
Any idea how to make it work?
|
|
|
|
|
your code displays 10 elements and is working. starting from 0.0 to 4.1 . Which is the exact string you feel is missing as per the code.
suhredayan There is no spoon.
|
|
|
|
|
The code to create them does work, but in the list the groups don't have the right elements in them. Here is what I get in my list control:
Group 0
-0:1
Group 1
-0 <--This should be in group 0
-1:1
Group 2
-1 <--This should be in group 1
-2:1
Group 3
-2 <--This should be in group 2
-3:1
Group 4
-3 <--This should be in group 3
-4:1 <--Where did 4 go? It doesn't show up in the list.
The problem is the first element in each group shows up in the preceeding group, which is probably why 4 does not show up. I can't seem to figure out why this happens and how to fix it. Got any ideas?
|
|
|
|
|
i have developed one console application in VC++. It contains following code;
system("\\\\COMP1\\shared\\app1.exe");
it tries to execute app1.exe, which resides on remote machine. It works when run as a console application.
I have created one service MyService. This service calls the above console application.In this case system() fails to execute app1.exe .
please help me.
bhavesh
|
|
|
|
|
service by default runs as "SYSTEM" user. Suggested way is to make service run as
a different user, who has the permission to access the "COMP1\\shared" folder. Open "SCM->dbl clk MyService->Logon_tab" change the user.
suhredayan There is no spoon.
|
|
|
|
|
2 questions
1) is wininit.ini in windows directory or system directory?
2) how to write keys to a secton of wininit.ini file?
thx
includeh10
|
|
|
|
|
1) The \windows directory
2) It's an INI file, however for deleting it's harder because the format is:
[rename]
NUL=C:\temp\file1.exe
NUL=C:\foo\file2.exe and so on. You can't use WritePrivateProfileString() because the second NUL line would replace the first. You need to read the whole file in, modify it, and write it back out. I know I saw an MSDN article with code to do this, but I can't find it now.
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
hi mike,
your comment is the same as doc in VC doc about function MoveFileEx().
i write this pice of code manually to ininit.ini, but none of files are deleted after reboot.
headache.
includeh10
|
|
|
|
|
to delete an dll (COM) file programmatically which is used by system.
MoveFileEx() can do that if reboot system by the function is unavailable on win95/98.
is there a function (reboot is fine) for win95/98 which can delete a file used by system?
thx
includeh10
|
|
|
|
|
Dosen't win95/98 allows you to delete the COM dll if its loaded also ?
suhredayan There is no spoon.
|
|
|
|
|
Hi there!
in 95/98 system you can write in WINinit.ini for deleting the file at reboot.
I have seen article relating to this in CP ,but can't able to find that today.
I think you have to find that your self
"I Think this Will Help"
[Vote One Here,.....]
<h5
alok gupta="" <br=""> visit me at http://www.thisisalok.tk
|
|
|
|
|
is there any way that i can write a generalized program to dynamically detect
any number of Dll in a folder and statically link them.
upto now i have my application that statically links and implicitly loads the dlls. i will detect the newly added dlls and keeps information in File.The infor
mation in the file and registry information is enough. The problem is how i can
my appliation understand the new dlls, how can oi include the headerfiles.
IS THERE ANY POSSIBILITY
|
|
|
|
|
As far as I know, this isn't possible.
Static linking implies that all code be known and identified at link-time, static linking is effectivly dynamic linking with hidden 'glue' that uses staticly bound stubs to dispatch to the dll.
This is possible and very simple to do with dynamic linking provided your class heirarchy supports it.
|
|
|
|
|
Can someone tell me the basic difference between a vector,list and dqueue. just the basic difference is appreciated.
|
|
|
|
|
They all have slightly different performance specifications and operations which make them suitable for different tasks.
std::vector is a dynamic array
std::list is a doubly linked list
std::deque is a hybrid container which is like a list of vectors (from memory)
By default, use a vector.
If you need to add to the front and the back, use a deque.
If you need to be able to insert/remove efficiently from the middle of a container, and never need random access use a list.
|
|
|
|
|
hi there,
<br />
char buf[1024];<br />
StrFormatByteSize(5*1024*1024*1024, buf, 1024 );
unsigned long size = 5368709120;
StrFormatByteSizeA(5368709120, buf, 1024);
(a), (b) is supposed to be 5G Bytes, am i right?
but StrFormatByteSize gave me 1G Bytes
what did i do wrong?
ie version is 6
thanks for your time
|
|
|
|
|
The first param of StrFormatByteSizeA() is a DWORD , 5GB overflows a DWORD . From the docs:The first parameter of this function has a different type for the ANSI and Unicode versions. If your numeric value is a DWORD, you can use StrFormatByteSize with text macros for both cases. The compiler will cast the numerical value to a LONGLONG for the Unicode case. If your numerical value is a LONGLONG, you should use StrFormatByteSizeW explicitly.
--Mike--
LINKS~! Ericahist updated! | 1ClickPicGrabber | CP SearchBar v2.0.2 | C++ Forum FAQ
Strange things are afoot at the U+004B U+20DD
|
|
|
|
|
it works!
|
|
|
|
|
Hi:
In C there is sqrt( ) function which gets the square root of any number. The sqrt(4) = 2 which is = 2 x 2.
I wonder how could I use it to find the 3rd order root, for example sqrt3(8)=2, which is = 2x2x2.
Thanks in advance.
joe,
|
|
|
|