This blog has been moved to
http://nibuthomas.wordpress.com
You are not logged in.
Log in
|
Programming Tips
Wednesday, 2 July 2008
Blog moved
This blog has been moved to http://nibuthomas.wordpress.com
Posted by Nibu babu thomas
at 11:51 AM
Monday, 21 May 2007
Calling a constructor from another constructor of the same class...
Mood: a-ok Topic: C++ Many times I had to write an init function to make initializations common for all constructors. But now I 've found a way... class MyClass private: void main()
Posted by Nibu babu thomas
at 11:06 AM
Updated: Monday, 21 May 2007 11:11 AM
Friday, 18 May 2007
Invoking constructor of a constructed class!!
Mood: bright Topic: C++ class MyClass void main()
Posted by Nibu babu thomas
at 3:26 PM
Updated: Monday, 21 May 2007 11:22 AM
Thursday, 1 March 2007
A printf type of MessageBox function which takes variable arguments!
Mood: bright Topic: VC++ It's a hard chore for a programmer to display string and integers in a message box, mainly because they have to use CString or sprintf to get these integers in formatted manner... For eg: int nAge = 27, nSal=100; And call this function like wise ShowMsg( _T( "Title" ),You can customize this function based on your need.
Posted by Nibu babu thomas
at 2:24 PM
Updated: Friday, 2 March 2007 2:52 PM
Monday, 26 February 2007
Sizeof dynamically allocated memory!
Mood: irritated Topic: VC++
Use _msize.
Posted by Nibu babu thomas
at 5:33 PM
Updated: Monday, 26 February 2007 5:52 PM
Saturday, 24 February 2007
Displaying
Mood: chillin' Topic: VC++ There is an exported function in ntlanman.dll that does this. The name of the function is ServerBrowseDialogA0. HMODULE hModule = LoadLibrary( _T( "ntlanman.dll" )); typedef DWORD ( WINAPI *FNNTBrowseDlg )( HWND hwnd, FreeLibrary( hModule );
Posted by Nibu babu thomas
at 1:35 PM
Updated: Saturday, 24 February 2007 1:42 PM
Thursday, 22 February 2007
How to Create a GUID programmatically
Mood: cool Topic: VC++ Do the following... GUID guId = { 0 }; or To convert to string use... PUCHAR pChar = 0;
Posted by Nibu babu thomas
at 3:18 PM
Tuesday, 13 February 2007
getch and getche in Windows console apps!!
Mood: mischievious Topic: VC++ Ever wondered how to implement getch and getche in Windows console application... Here is how we do this... int getch() DWORD dwInputMode = 0; // Code that disables line input and echoing of entered character char cBuff = 0; // Return to previous settings return cBuff; int getche()
Posted by Nibu babu thomas
at 1:38 PM
Updated: Tuesday, 13 February 2007 2:10 PM
Useful windows tips
Mood: loud Topic: Windows Shift + Click -- on any hyperlink to open it in a new window. Ctrl + + -- Resize any list control to it's contents. Shift + Click -- on any folder inside explorer to open it in a new window with explorer bar at it's side showing the path leading to that folder. Shift + Enter - Does the same as above Ctrl + Enter will open any folder in a new window Ctrl + Double Click will open any folder in a new window Ctrl + Double click on any explorer title bar including internal explorer to see that window in full screen mode. Alt + Drag to select in columns. Ctrl + Shift + F8 to do the above using keyboard. WinKey + L to lock the desktop Alt + Enter on any file to view it's property pages. Alt + Double Click on any folder to open it's property pages. Alt + Spacebar to open System menu of any window Alt + - to open system menu of main child windows, for eg: Word document windows
Shift + Close button ( On caption bar ) to close all parent windows of a child explorer window at once. Winkey + D -- Show desktop
Posted by Nibu babu thomas
at 1:24 PM
Updated: Monday, 26 February 2007 5:11 PM
Monday, 12 February 2007
Auto expanding #define's and #include's
Mood: a-ok Topic: VC++ Did you ever feel the need for having all the macros defined in a file to get expanded automatically... Now you may wonder why do we need such a thing, one reason could be to learn the intricacies of these macros. For eg: BEGIN_MESSAGE_MAP, DECLARE_DYNAMIC, IMPLEMENT_DYNAMIC... Now the question is how to do this... Here is nice little compiler option... /P - PreProcess to File Now here is how we do this... cl /P CMyDlg.cpp This command will create a CMyDlg.i file which contains the entire source contents of CMyDlg.cpp along with all include files expanded with it's contents and all macros expanded to actual code. But before all this just look at the size of CMyDlg.i. It could be in MB's. :)) But our source file's size was in KB's right? ;) Well this shows the real thing that's going on. I would like to give you a task, go through all the compiler options and find out what they do. Maybe take a printout of these options and hang it somewhere near to you, so that you can have a quick look at all compiler options, and understand what they do. Hope this helps you and me to learn.
Posted by Nibu babu thomas
at 2:53 PM
Updated: Monday, 26 February 2007 5:12 PM
Tuesday, 6 February 2007
Extracting bytes in a floating point variable
Mood: crushed out Topic: VC++ The easiest way to get the bytes in a floating point variable... BYTE byFloatBytes[sizeof( float )] = { 0 }; or BYTE byDoubleBytes[sizeof( double )] = { 0 };double dDoubleNumber = 0.191911; memcpy( &byDoubleBytes, &dDoubleNumber, sizeof( byDoubleBytes )); or float fFloatVar = 21343.34f; // Use a union etc. Be sure that you don't step out of the size of the floating point variable which could lead to disaster. The first two methods are safe, the second last one should be only used if you are absolutely confident as to what you are doing.
Posted by Nibu babu thomas
at 5:14 PM
Updated: Monday, 26 February 2007 5:32 PM
Stringizer ( #) and Token pasting (## ) operator.
Mood: hug me Topic: VC++ The Stringizer operator... # and Token pasting operator ## A powerful preprocessor operator which you can use for surrounding your strings with quotes... and to combine your string tokens during compile time I always use these operators for returning error constants as string... For eg: If I have an error constant like ERROR_INVALID_EXP_DATE. What should I do to return it as a string... Normally we will declare an LPCTSTR constant as follows... static const LPCTSTR lpctszErrInvalidExpDate = _T( "ERROR_INVALID_EXP_DATE" ); Which becomes a hard chore if the error code to be returned is one two many, now the question how can we automate this... A small macro can do the trick for us. #define SWITCH_CASE_STRING( constVar )\ case SUCCESS: Since the variables are static they won't be created unless the particular error occurs. And they won't be created every time since the variables are static.
Posted by Nibu babu thomas
at 5:09 PM
Updated: Monday, 26 February 2007 5:25 PM
Auto completion
Mood: chillin' Topic: VC++ Goto Start->Run Type C:\..... You will get a dropdown list box with all the files and folders in C: drive. Have you ever thought about incorporating this kind of a behavior into your application... There is an API which does this... ( Microsoft was generous enough to create one and share it ). :) The API is SHAutoComplete. All you should have is an edit box. Get the handle to the edit box and pass it to this function. You will get a drop down list box for the path that you are typing in the edit box. Cool isn't it. :) NOTE: Don't forget to call CoInitialize before using this function and of course CoUninitialize Do look up this API in MSDN. You will find interesting options. Have fun.
Posted by Nibu babu thomas
at 4:45 PM
Updated: Monday, 26 February 2007 5:17 PM
Monday, 27 November 2006
How to retrieve language name and country name from a Language ID
Mood: happy Topic: VC++ Ever wondered how to get language name and country name from a given language id like 1033. Well this is how we do it... TCHAR szBuffer[MAX_PATH] = { 0 }; // Get language name, for eg: English // Get country name, for eg: United states. JESUS Rulz :))
Posted by Nibu babu thomas
at 4:01 PM
Updated: Monday, 27 November 2006 6:25 PM
Tuesday, 31 October 2006
How to get the string that is used to register a message using RegisterWindowMessage
Mood: party time! Topic: VC++ It's quite common that we use RegisterWindowMessage to register a message that is used for all instances of this application. Have you ever wondered how to get the text back from from the message number that is returned by RegisterWindowMessage? This will make it more clear... const UINT uMyWndMessageReg = ::RegisterWindowMessage( _T( "Nibu is testing" )); Now how to get back "Nibu is testing" from uMyWndMessageReg? Well this is how we do it... TCHAR szMsgBuf[ MAX_PATH ]; Ah wait I have a question for you, can you tell me what's going behind the scenes of RegisterWindowMessage. ;)
Posted by Nibu babu thomas
at 2:00 PM
Updated: Monday, 27 November 2006 6:32 PM
Saturday, 20 May 2006
How to convert a ANSI string to UNICODE string and vice versa?
Mood: don't ask Well quite simple, but still quite frequently asked in forums... :) There are two macros that does this for us. They are as follows. Note: You must include atlconv.h A2W - ANSI to UNICODE W2A - UNICODE to ANSI Before using these two macros you have to use this macro too... USES_CONVERSION Here is a code snippet for you... ;) //#include <atlconv.h> //An example for converting from ANSI to UNICODE //use this first USES_CONVERSION; //An ANSI string LPSTR lpsz_ANSI_String = "An ANSI String"; //ANSI string being converted to a UNICODE string LPWSTR lpUnicodeStr = A2W( lpsz_ANSI_String ) //Another example for converting from UNICODE to ANSI //Use this first USES_CONVERSION //A UNICODE string LPWSTR lp_UNICODE_STR = L"A Unicode String"; //UNICODE string being converted to a ANSI string LPSTR lpsz_ANSI_STR = W2A( lp_UNICODE_STR ); So that's it we are done with it. Ah wait don't leave here's a homework for you... Rip apart CW2A and CA2W :))
Posted by Nibu babu thomas
at 3:49 PM
Updated: Saturday, 20 May 2006 3:53 PM
How to prevent MDI applications from showing a template dialog at startup?
Mood: a-ok Topic: VC++ Many times we don't want the MDI template dialog to be shown during startup of an MDI application. Well the million dollar question is how can we prevent it from popping up. Well this is how we do it... :) Goto your applicationname.cpp file and edit the InitInstance method at the specified place as shown here... // Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //this is the line that you should add cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing; // Dispatch commands specified on the command line if (!ProcessShellCommand(cmdInfo)) return FALSE; There is a member variable in the class CCommandLineInfo which is called m_nShellCommand. This is the variable that tells the command line parser to start a new file at startup. This variable is by default set to FileNew. We have to assign a new value to this variable i.e. FileNothing. Well this means empty file so MDI will be blank initially and the template dialog doesn't pop up. We have to click on New file to see the template dialog again and then choose any template from a set of multiple templates that we have created.
Posted by Nibu babu thomas
at 3:03 PM
Updated: Saturday, 20 May 2006 3:27 PM
Eh! An Unmovable Dialog!
Mood: sharp Topic: VC++ Just try this... CMenu* pSysMenu = GetSystemMenu(FALSE); pSysMenu->RemoveMenu(SC_MOVE, MF_BYCOMMAND); Lol lol now it's not moving. Ah no!!! Now tell me how can I make it movable again? Lol the funniest question of the century...ROTFL.
Posted by Nibu babu thomas
at 3:00 PM
Updated: Saturday, 6 May 2006 12:29 PM
Wednesday, 5 April 2006
Increase statusbar height and width!
Mood: silly Topic: VC++ This is real simple: m_YourStatusBar.SetBorders( 1 //cxleft ,5 //cytop ,1 //cxright ,5 //cybottom ); :)
Posted by Nibu babu thomas
at 1:17 PM
Newer | Latest | Older |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||