Changing Windows CE 6.0 LOCALE using native code - windows-ce

I am writing an C/C++ application for WinCE 6.0, which should let the user choose its regional settings like date, time, etc. Depending on actual user's LOCALE, GetDateFormat() and GetTimeFormat() functions result in well formatted strings. That is why I would like to change the Windows CE 6.0 LOCALE programmatically. How can I do it?

Use the NLS APIs - probably starting with SetUserDefaultLCID.

Related

Where is the NCSO.jar and java in IBM Notes on a Mac?

I'm using IBM Notes 9 Social Edition (Mac) however it does not contain this jar on the client. Nor is it packaged with java. Is the Notes API not supported on a Mac environment?
I don't know why it's not found on your machine - perhaps it's only installed with the Domino Designer client nowadays. But you can get NCSO.jar from your Domino server or from a Domino Designer installation on a Windows machine. There's no reason why it wouldn't work on a Mac.
IBM Notes 9 Social Edition (Mac) does not ship with NCSO.jar, but you can retrieve it from other sources (as #Richard Schwartz metions). It does work in the Mac environment but you need to be sure to use the JDK 1.6 that it gets hooked up to when IBM Notes is installed. e.g.:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk
Also, you need to ensure you use the -d32 flag to run it in 32-bit mode, as it defaults to 64-bit mode. You cannot use any new JDK version as the 32-bit mode is no longer supported.
Furthermore, you may need to update the DYLD_LIBRARY_PATH environment variable to point to your notes dydll library files in the Notes installation eg.:
DYLD_LIBRARY_PATH="/Applications/IBM Notes.app/Contents/MacOS"

Is there a way to develop a Rational Team Concert (RTC) project in Linux terminal?

I am a new hire and I prefer working in the UNIX environment, however the project I am on is developed in the IBM WebSphere environment - IBM WID connected up to RTC repo. Any way I can develop from UNIX?
[My apologies, didn't read the title of the question - revising answer]
RTC has a commandline interface that works just fine on Linux. The main usage of this interface is version control operations, linked to work items. Reference guide for RTC v3 is here: http://pic.dhe.ibm.com/infocenter/clmhelp/v3r0m1/index.jsp. Search for "Source control command line reference" (it's in the reference section of the Help), or the latest shipping release of RTC is v4 - http://pic.dhe.ibm.com/infocenter/clmhelp/v4r0/index.jsp. Search for the same string "Source control command line reference".
You also have the option of using WID (a development environment based on Eclipse) directly in Linux. WID 7.0 supports Linux (see http://www-01.ibm.com/support/docview.wss?uid=swg27016959).
If you are using other versions of WID - search for the system requirements for that version to see if Linux is supported.
From a WID perspective - RTC is installed as an Eclipse plugin to the WID environment to provide the source code management, work item/task management and build capabilities.
As VonC rightly points out - you need to be aware of the cross-platform dependencies, but those should not prevent you from working with WID and RTC on a Linux/Unix platform.
"From Linux to Windows, Mac to mainframe, Eclipse to Visual Studio, we've got you covered", says their site. As far as I know, RTC consists of web software+UI (multiplatform), eclipse (multiplatform), websphere that runs on multiple platforms and source control that is supported on different platforms. Also, Linux/Unix is listed on their supported environments. So yes, you should be able to develop from UNIX.
You can develop on Linux, but be mindful of classic cross-platform issues like:
potential case problems: you could store
permissions not saved: RTC does not store/restore file permissions, except for the
"execute" bit, which only applies to Unix systems, since Windows using
the extension of the file to determine "executability", not an execute bit.
eol style (or mixed eol): the default EOL RTC assigns to text files is
PLATFORM, and RTC will try to convert your text files end-of-lines.

How do I retrieve the OEM version of a Windows CE device in .NET Compact Framework 3.5?

I am developing applications for handheld terminals running Windows CE 6.0, using .NET Compact Framework 3.5.
Is there a universal way to retrieve the OEM version (i.e. the "OEM Version" string seen in the "System Info" control panel applet), using the .NET CF Class Library or Smart Device Framework, regardless of the device vendor?
There's no "universal" way, as there's nothing that says an OEM has to provide a version at all, or if they do, there's nothing that says how they must do it. There are some provided interfaces, which an OEM would be encouraged to use (SystemParametersInfo with SPI_GETOEMINFO (which is what luskan's suggestion returns) or SPI_GETPLATFORMVERSION (which is probably in the SDF somewhere too) would be where I'd start to investigate, but be forewarned that just because it works on one device, doesn't mean it'll work on another. Do loads of validation and fallbacks in your code.

Windows CE UI Componets

Are there any UI Components for Windows CE 6.0, other than the ones supplied by the Compact Framework and Visual Studio? I am developing applications with C# and the Compact Framework that need some visual design and the VS controls and components are not sufficient to me.
Thx your answers.
See this similar question: Round buttons for Windows Mobile. It should be relevant for Windows CE 6 as well. The example is in native code, but you can use SDF 1.4 source code to convert it to C#. I guess you can use the technique shown to create more controls of your own.
I also found this article about creating custom controls for Windows Mobile that might suite Windows CE as well as it is based on the compact framework, but I have not read this through nor tested it.
What components exactly are you looking for?
Windows CE6 R3 now supports Silverlight, so you can do some pretty cool things, although i think it's a little more complicated than typical Silverlight.
http://www.microsoft.com/windowsembedded/en-us/products/windowsce/silverlightforwe.mspx

How do I know if my program needs MDAC?

I have a set of Windows programs that is mostly created with VB6 and VC++ 6. Its installer is created using InstallShield.
A couple users have recently reported a problem trying to install it on Vista. It is complaining that "MDAC 2.6 Sp2 cannot be installed on this machine. MDAC 2.6 Sp2 requires any one of the following configurations", and then lists several OSes, Vista not among them.
A little googling shows that there's a bug in InstallShield's handling of MDAC - it shouldn't be checking for it on Vista, because there is no such thing as MDAC on Vista (there's a new thing - "Windows DAC").
I could make the change to my InstallShield project suggested on that page, but I am concerned about doing so, because I have no way to test it (this problem does not occur on all Vista machines, and I haven't been able to make it happen on any Vista machine I have access to).
However, after looking at Wikipedia's page on MDAC, I can't imagine why we would need it for our programs in the first place. We're not using any databases, at least not explictly (maybe some Microsoft component that we're using is using it, though?).
I was not the original author of the InstallShield project. I am beginning to suspect that MDAC might have been inadvertantly added to it, or perhaps advertantly but just as "uhhh, maybe we need that".
How can I explicitly tell whether my programs need MDAC or not? I can look at the references and such in the VB6 and VC++ projects; is there any way to tell from those whether I can safely remove MDAC from the InstallShield project? For example, perhaps there's a single MDAC reference which, if not present in my VB/VC++ projects, means that my programs definitely do not require MDAC?
Thanks in advance for any help.
I expect you are right, MDAC was probably included with the original InstallShield project configuration, and nobody has bothered to remove it.
On the VB6 side you should be able to tell if MDAC is being used by going into the "References" dialog (I think its in the Projects dropdown menu of the ide) and checking to see if there is anything in there to do with MDAC or MSAccess. I haven't worked with VB6 in a while, but the text should look something like "Microsoft ActiveX Data Objects 2.x Library".
I'm guessing it is less likely that it is being used On the C++ side, but you could try searching for keywords like msdado, mdac and msaccess to see if theres any sign of a #import on one of the mdac dlls.
When deploying to Windows XP and later there is no reason to include MDAC or Jet 4.0, since even XP RTM (gold) shipped with MDAC 2.7 as well as Jet 4.0.
Microsoft Data Access Components (MDAC) release history
How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine goes into more recent Jet history.
MDAC releases include compatibility typelibs for ADO, so even if your program was compiled against MDAC 2.6 it will actually use the latest ADO on a target machine. The real grief can come if the program early-binds to ADOX.
ADOX never shipped with appropriate compatibility interfaces, so programs should almost always use late binding with ADOX.
DAO is another issue, but (a.) nobody should really be using it anymore without a good excuse and (b.) it died at DAO 3.6 so there should be no compatibility issue as long as your programs were upgraded to 3.6 and Jet5x (Jet 4.0, Access 2000 format).
The story gets more complicated when deploying downlevel from XP of course.
Beginning I think with Windows XP Microsoft began including MDAC. However, in MDAC version 2.6 and later they no longer included the Jet 4.0 components. (Jet 4.0 SP8 can be found here)
If you are using Visual Fox Pro you need to install either the ODBC or OLEDB drivers depending on you code for that.
ODBC
OLEDB
All of these downloads depend on having at least MDAC 2.6 installed.

Resources