|
While coding for some context menus, I stumbled across the following issues regarding storage cards. We are using the Compaq iPaq, and we have the dual PC-Card caddy. Our app relies on the iPaq to have the little blue memory card inserted, and we figured just checking for a "Storage Card" would be adequate. Oh, how wrong we were...
1) When the PDA is reset with the little blue memory card inserted in it's slot, it shows up as "Storage Card".
2) If you then insert a flashcard in the first PC-Card slot, it shows up as "Storage Card 2".
3) If you then insert a flashcard in the second PC-Card slot, it shows up as "Slot 2".
So far so good, right?
4) If you remove the little blue memory card and reset the pda, the flash card in PC-Card slot 1 becomes "Storage Card", and the flash card in PC-Card slot two remains "Slot 2".
5) If you then re-insert the little blue memory card into it's slot, it becomes "Storage Card 2".
-------------------------------------------------
This is NOT a good thing. We want to REQUIRE that the little blue memory card is inserted, but if a flash card can be inserted and is allowed to be a "Storage Card", we're screwed.
QUESTION:
Is there any way to tell whether or not the storage card is a memory card (using the memory card slot in the iPaq), or if it's plugged into a PC-Card slot in the caddy?
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
Well, I think I found a way to tell a storage card from everything else on the system.
From the device root, check each directory name to see if one of it's file attributes is FILE_ATTRIBUTE_DIRECTORY.
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
Well, my idea kinda works. It's filtering out all items that aren't temporary, but unfortunately, it's also including the "iPAQ File Store".
I guess I still need to find a method for identifying and showing JUST storage cards in a directory dialog...
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
Well, I tried using this code, and it still finds the "iPAQ File Store", even though it's not a flash card.
Grrrrr....
BOOL bFoundCard = TRUE;
CString strSub = _T("");
HANDLE hCard = NULL;
WIN32_FIND_DATA fdCard;
hCard = FindFirstFlashCard(&fdCard);
if (hCard != INVALID_HANDLE_VALUE)
{
strSub.Format(_T("%s%s\\"), pszPath, fdCard.cFileName);
EnumDirs(strSub, pszFilter, hItem);
while (bFoundCard)
{
bFoundCard = FindNextFlashCard(hCard, &fdCard);
if (bFoundCard)
{
CString sKey(_T("storage card 2 slot 2"));
CString sTemp(fdCard.cFileName);
sTemp.MakeLower();
if (sKey.Find(sTemp) >= 0)
{
EnumDirs(strSub, pszFilter, hItem);
}
}
}
}
FindClose (hCard);
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
|
Thanks for the link, but there's nothing there I didn't already try (and at first glance, that "mikeg" person is a prick).
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
I get an error installing both the standard SDK shipped with EVC++ 4.0 and the one for Pocket PC 2003 - "Failed to initialize property bag".
The SDKs appear to install some files but EVC++ 4.0 says that there is no SDK installed. I installed everything successfully on my laptop running Windows XP Professional but not on my desktop which runs 2000 professional.
I don't remember seeing this before, except maybe in Visual Studio .Net where it was an MSI issue but I have the latest runtime so I have no more ideas I couldn't find anything at Google (other than someone with the same problem and no solution), which surprises me.
Can you help?
Thanks
Luke
|
|
|
|
|
|
Thanks João but this didn't help me. I still get the same problems.
I'm guessing it's something to do with permissions etc but I have administrator privileges on my PC. I did have Visual Studio .Net installed and I know this changes lots of things at low level but it is now uninstalled.
I tried to get the Windows SDK to help me read the MSI install log for the CE SDK (which looks OK on the surface) but the IE control that is used for the SDK install crashes Internet Explorer so I can't even get that
|
|
|
|
|
Hi
Anyone knows if the .NET Framework will be avalaible to the PALM OS??
I really wanna make some personal apps for my Treo.
Thanks
----
hxxbin
|
|
|
|
|
hxxbin wrote:
Anyone knows if the .NET Framework will be avalaible to the PALM OS??
I would say this is highly unlikely, unless Palm decide to implement the .NET Compact Framework and the relevant supporting technologies (IL, CLR, etc) themselves - Microsoft would only write such a thing themselves given a compelling reason that outweighs the cost of supporting a competitor
As for Palm RAD tools, you might look at NS Basic, which I've used and seems ok, or something like Satellite Forms? Failing that, try Codewarrior or the GCC toolchain for Palm to develop using C/C++
--
Ian Darling
"The moral of the story is that with a contrived example, you can prove anything." - Joel Spolsky
|
|
|
|
|
yes buddy. microsoft will relase .NET framework for palmtops so they can handle the market!!!
|
|
|
|
|
I've an application with a propertypage with 2 sheets.
When opening my propertypage i want The SIP to be opened on the bottom of my pocket. I use the SipShowIM(SIPF_ON); function --> ok the keyboard show itself but 1 second after it hides itself!
What's the matter?!
I've try to place the function before doing the Sheet.DoModal();
Then I've try to place the function in the InitDialog() method of my sheets.
Thanks
Olivier
|
|
|
|
|
I use the following method to show/hide the SIP. When the app starts, the sip is hidden. When I display a dialog, I do this:
CMyDialog dlg;
ShowSipButton();
dlg.DoModal();
HideSipButton();
Here's the code for showing and hiding the sip:
class CMainFrame
{
protected:
HWND m_hwndSIP;
CRect m_SIPRect;
BOOL m_bSIPHidden;
public:
void HideSipButton();
void ShowSipButton();
};
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
{
return -1;
}
m_hwndSIP = ::FindWindow(_T("MS_SIPBUTTON"), NULL);
ASSERT(NULL != m_hwndSIP);
::GetWindowRect(m_hwndSIP, &m_SIPRect);
m_bSIPHidden = FALSE;
HideSipButton();
return 0;
}
void CMainFrame::HideSipButton()
{
if (!m_bSIPHidden)
{
ASSERT(NULL != m_hwndSIP);
::MoveWindow(m_hwndSIP, 0, 0, 0, 0, TRUE);
m_bSIPHidden = TRUE;
}
}
void CMainFrame::ShowSipButton()
{
if (m_bSIPHidden)
{
ASSERT(NULL != m_hwndSIP);
::MoveWindow(m_hwndSIP,
m_SIPRect.left,
m_SIPRect.top,
m_SIPRect.right - m_SIPRect.left + 1,
m_SIPRect.bottom - m_SIPRect.top + 1,
TRUE);
m_bSIPHidden = FALSE;
}
}
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|
Thanks a lot John.
Finally I found another method:
- In each CPropertyPage::InitDialog, I force the SIP status with :
SHSipPreference(AfxGetMainWnd()->GetSafeHwnd() ,SIP_UP);
Thanks again.
|
|
|
|
|
Instead of moving the SIP window I think the suggested method is to use SipShowIM or SipSetInfo.
#include "sipapi.h"
bool FkGetSipVisible( void )
{
SIPINFO si;
memset(&si, 0, sizeof(si));
si.cbSize = sizeof(si);
if( !::SipGetInfo(&si) ) return(false);
return( si.fdwFlags & SIPF_ON );
}
bool FkSetSipVisible( bool V )
{
DWORD v = V ? SIPF_ON : SIPF_OFF;
return( ::SipShowIM(v) == TRUE );
}
I then call these in OnSetfocus*() and OnKillfocus*() methods for any edit control.
(The OnLButtonDown() allows me to dismiss the SIP by tapping anywhere on the disalog/page outside an edit cotrol.)
e.g.
void CkPgEditInfo::OnLButtonDown(UINT nFlags, CPoint point)
{
CPropertyPage::OnLButtonDown(nFlags, point);
FkSetSipVisible(false);
SetFocus();
}
void CkPgEditInfo::OnSetfocusEdit () { FkSetSipVisible(true); }
void CkPgEditInfo::OnKillfocusEdit () { FkSetSipVisible(false); }
...cmk
Rosencrantz: I don't believe in it anyway.
Guildenstern: What
Rosencrantz: England
Guildenstern: Just a conspiracy of cartographers then.
Save the whales - collect the whole set
|
|
|
|
|
What I mean is, in my application, through GDI+, I've enabled to user to draw/scribble/write on a certain area on the screen. The problem is, the Image.Save function is not enabled in mobile apps, so is there another way to save that image?
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
Support Bone
It's a weird Life
|
|
|
|
|
I've just got a pocket pc to develop apps on, and I've been playing around to get a feel on it. The thing that's got me stumped is, how do you close an application? I've tried "clicking" on the "x" button on the upper right side of the screen, but all that does is minimizes it somewhere (and I can't find it again, but that's another issue).
Anyway, how do you close any applications in pocket pc?
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
Support Bone
It's a weird Life
|
|
|
|
|
Believe it or not, that is the standard way of "closing" a Pocket PC application. Anyway, that is what Microsoft wants you to do should you want to make your application logo compatible. You can read all about it here:
Designed for Windows for Pocket PC Handbook for Software Application (PDF)[^]
This is a standard behaviour that is enforced by the system, unless you create an "Exit" menu item. When your application receives this command, you just need to send a WM_CLOSE message to the main window. But this is basic stuff...
If you are working with MFC, there is also a neat trick (in fact this is also a Pocket PC standard, although a de facto one - so I believe) that allows you to close an application when the Ctrl+q key message is sent to the appication's main window.
Finally, there is an undocumented way of making the Smart Minimize Button (that is how (X) is called) close your application. You can find the article here:
QA: How can I close my application by clicking the smart minimize (X) button?[^]
Please read the article discussion as well.
Regards,
João Paulo
|
|
|
|
|
But why would there be a "Smart Minimize Button" and not a Exit button? Sometimes, I wonder about MS.
Anyway, thanks a bunch for the info
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
Support Bone
It's a weird Life
|
|
|
|
|
Nick Seng wrote:
But why would there be a "Smart Minimize Button" and not a Exit button?
Here is my personal opinion: I believe that Microsoft designed the Pocket PC environment targetting Palm users. If you look at the Palm OS (I once was a happy Palm user) you will see a lot of features that seem to have been "forced" into the Pocket PC. One of these is the inability to close an application. Another one is the artificial restriction on document locations (File Open dialog) and the way document-based applications manage their documents (Pocket Word and Excel, for instance).
Regards,
João Paulo
|
|
|
|
|
I never thought of that.
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
Support Bone
It's a weird Life
|
|
|
|
|
Hello
I have a bluetooth device that establish a connection with my Pocket PC (Serial port connection type). In my program, I analyse the data sent by this device. But I want first to check if the connection is well established.
The function CreateFile returns a valid handle even if no bluetooth conncetion was established. So, when I try to write on this port, the program hangs...
Any solution ?
Thanks
|
|
|
|
|
How to create login page in WinCE? Please provide me with sample application.
|
|
|
|
|
Okay, more on my exception problems...
The problem is this:
Our app starts up fine, and I can go into a property sheet. If I click OK in the property sheet, the app goes into it's infernal standby mode (as if I had hit the "OK" thing in the titlebar).
At first, I thought it was an exception firing, but that's not the case. When I'm in the debugger, I can step cleanly through the OnOK function, and when the program returns conrtol to CMainFrame, the app is in standby mode.
If anyone has an idea of what to look for, I'd be interested in hearing about it.
------- signature starts
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
"You won't like me when I'm angry..." - Dr. Bruce Banner
Please review the Legal Disclaimer in my bio.
------- signature ends
|
|
|
|
|