When I repeatedly run the following code in VS10 debug mode, it behaves as I would expect. Right-clicking executes the expected code and the message in the status bar cycles correctly through the 2 cases. But when I run it as a release, the message is corrupted (I get a load of oriental characters). Making char* rcMess global doesn't help.
The following is the extraxt from WinProc:
switch (message)
{
case WM_RBUTTONDOWN:
if (++parallel==3)
parallel=0;
//update status bar message
char* rcMess;
switch (parallel)
{
case 0:
rcMess="Right-click for parallel 1 execution";
break;
case 1:
rcMess="Right-click for parallel 2 execution";
break;
case 2:
rcMess="Right-click for serial execution";
break;
}
SendMessage(GetDlgItem(hWnd,IDC_STATUS),SB_SETTEXT,2,(LPARAM) (rcMess));
InvalidateRect (hWnd,NULL,TRUE);
UpdateWindow (hWnd);
break;
Double education, thank you. Hadn't noted the different configurations between debug and release, and you both queued me to look at the implication of Unicode. I also changed char* to wchar_t* which is more appropiate I think.
Basically, the idea is to write code that compiles no matter what the Unicode setting of your project. Your code currently compiles OK because the Unicode setting happens to match your data types. If you (or someone in your team) happens to change this for whatever reason, the code won't compile.