|
Yes.
InitCommonControls();
hwndTab = CreateWindow (WC_TABCONTROL, "",
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,
0, 0, rcClient.right, rcClient.bottom,
hwndParent, NULL, g_hinst, NULL); Note that a tab control is not a property sheet. An MFC property sheet contains a tab control (and property pages).
/ravi
"There is always one more bug..."
ravib@ravib.com
http://www.ravib.com
|
|
|
|
|
How would I make the tab control cycle between different dialog templates?
|
|
|
|
|
By selectively showing/hiding modeless dialogs (based on the different templates) depending on the currently selected tab. It's not impossible, but non-trivial. MFC's CPropertySheet makes this easy.
/ravi
"There is always one more bug..."
ravib@ravib.com
http://www.ravib.com
|
|
|
|
|
Unless I can find an example, I think doing it that way would be too difficult for me
|
|
|
|
|
Even if you find an example, it's a lot more work and is much harder to maintain. I would much prefer to use MFC.
/ravi
"There is always one more bug..."
ravib@ravib.com
http://www.ravib.com
|
|
|
|
|
I'm using NT with the latest service packs (both NT and Visual Studio).
Anyone else noticed this? According to MSDN, GetFileTitle() is supposed to return just the filename without the extension. If you open "wankitywank.txt" and then call GetFileTitle(), it should spit out "wankitywank". It even says so explicitly with an example (not the same filename )
Trouble is, that's not what it does. GetFileTitle() returns the same as GetFileName(). Why are they lying to me?!
CFile f;
f.Open("someexistingfile.txt", CFile::modeRead);
cout << (LPCTSTR) f.GetFileTitle() << endl;
cout << (LPCTSTR) f.GetFileName() << endl;
J
|
|
|
|
|
|
Great. That code is no good for me, but now I know that when I religiously uncheck "Hide file extensions for know file types" in explorer after every re-install, I control GetFileTitle().
Thanks a bunch. But man, all I wanted was a quick access method that would give me the filename WITHOUT the extension. You'd think MFC could handle this...
J
|
|
|
|
|
Quit complaining at Microsoft for making a function that does what it's supposed to. It would take all of about 2 seconds for you to write your own.
CString strFilename="MyDOcumenttxt";
CString strTitle;
int nPos;
strTitle= ((nPos=strFilename.Find('.')) != -1) ? strFilename.Left(nPos) : strFilename;
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
I'd use ReverseFind().
/ravi
"There is always one more bug..."
ravib@ravib.com
http://www.ravib.com
|
|
|
|
|
Ouch.
Indeed, it did only take 2 seconds to write my own. I was hoping that I wouldn't have to, since the documentation (save the aforementioned additional article) makes it appear as if MFC does what I need.
J
|
|
|
|
|
That will break if the filename is something like "C:\foo\bar.1\baz". You need to find the last dot and backslash, and check that the dot is after the backslash before truncating the filename.
--Mike--
"COM didn't solve the old version of DLL hell - it just provided us with a new and improved version of hell."
-- John Simmons, 1/22/2002
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan.
|
|
|
|
|
|
Perfect. Thanks.
CFile f("c:\program files\crappysoft\wankitywank.txt", CFile::modeRead);
CString strPath = PathRemoveExtension(f.GetFileTitle());
Hopefully guaranteed to work in all situations... ?
J
|
|
|
|
|
No, because that GetFileTitle() returns a CString. You'll need to save the return value to a CString and call GetBuffer() on that string to get a non-const pointer to the filename.
--Mike--
"COM didn't solve the old version of DLL hell - it just provided us with a new and improved version of hell."
-- John Simmons, 1/22/2002
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan.
|
|
|
|
|
Wowsers... didn't read the spec completely. What the hell type of function modifies a string buffer in place?
I suppose the GetBuffer() would be safe since PathRemoveExtension() shouldn't try to expand the string at all.
CFile f("c:\program files\microsnot\wankitywank.txt", CFile::modeRead);
CString strTitle = f.GetFileTitle();
PathRemoveExtension(strTitle.GetBuffer(0));
strTitle.ReleaseBuffer();
Except, now I need to link in shlwapi.lib... I'm going back to my ReverseFind('.')...
Thanks though.
J
|
|
|
|
|
If you're using the code snippet above, be aware that it will break if the filename is something like "C:\abc\foo.1\bar" You need to find the last dot and last backslash, and make sure the dot is after the backslash before truncating at the dot.
--Mike--
"COM didn't solve the old version of DLL hell - it just provided us with a new and improved version of hell."
-- John Simmons, 1/22/2002
My really out-of-date homepage
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan.
|
|
|
|
|
I'm in need of a program or class that will check a remote website for new versions of the program files, and update them if needed (check against the timestamps?).
This is so generic, I cannot believe that it hasn't been implemented already.
Thanks in advance.
Jim
|
|
|
|
|
How do I display an animated gif on a dialog box.
Help needed !
|
|
|
|
|
|
How do I break out of my main processing loop(OnOk)when the user selects the Cancel button. I was thinking along the lines that I should use:
MSG message; // declared out side the loop
for ( int t=0; t< mpData.GetSize(); t++ ) {
if (::PeekMessage(&message, NULL, 0, 0, PM_REMOVE)){
::TranslateMessage(&message);
::DispatchMessage(&message);
}
}
This does not seem to work. When I omit this piece of code and user hits Cancel, the program just runs until completed.
Any suggestions on how to remedy?
CD
|
|
|
|
|
In Cancel button message handler set Cancel flag to TRUE. In your loop check this flag value after you processing messages. If it is TRUE, break out of loop.
|
|
|
|
|
I do windows programming both using WinMain approach and MFC approach.
If we use WinMain approach, the window is created using CreateWindow() function and we have to register window class etc etc. However, I don't want a window created by CreateWindow() function. I want to make custom window for example that of sonork messenger. I got the source code of sonork and it is complex enough to understand. Can you tell me a source or a book from where I can learn the step-by-step approach of making custom windows ???
Zia Khan
|
|
|
|
|
Err, unless I'm completely mistaken, ALL windows are created with the CreateWindow() function. I don't think there's another way. Even MFC uses it.
There are several books around on plain Win32 programming, but they might not be in print anymore. Try an Amazon search for "Win32".
J
|
|
|
|
|
Hi,
Is there anyway to monitor an already opened serial port's activity?
Any help would be highly appreciated,
Cheers,
Mehdi
|
|
|
|