Tipy a triky (MFC a C++)

Jak zakázat / povolit příkaz zavřít v sys-menu?

Zakázání položky:

CMenu* menu;
menu=GetSystemMenu(FALSE);
menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);

//Musí se překreslit horní část okna
SendMessage(WM_NCACTIVATE, TRUE, 0);

Povolení položky:

menu->EnableMenuItem(SC_CLOSE, MF_BYCOMMAND | MF_ENABLED);

Jak zakázat / povolit tlačítko zavřít v okně?

Povolení:

DWORD cl = 0;
cl = GetClassLong(m_hWnd,GCL_STYLE);
SetClassLong(m_hWnd, GCL_STYLE, cl | CS_NOCLOSE);
SendMessage(WM_NCACTIVATE, TRUE, 0);

A zakázání:

SetClassLong(m_hWnd, GCL_STYLE, cl & !CS_NOCLOSE);

Jak otevřít internetovou stránku v prohlížeči?

ShellExecute(0,"open","www.abc.cz",NULL,NULL,SW_SHOWNORMAL);

Jak otevřít Outlook s vyplněným jménem a subjektem?

ShellExecute(0, "open","mailto:Radek_Zap@volny.cz?Subject=Předmět", "",
NULL, SW_SHOWNORMAL);

Jak umístit okno doprostřed obrazovky?

RECT rect;
WORD wWidth,
wHeight;

GetWindowRect(&rect);
wWidth =GetSystemMetrics(SM_CXSCREEN);
wHeight=GetSystemMetrics(SM_CYSCREEN);

MoveWindow((wWidth/2) - ((rect.right - rect.left)/2),(wHeight/2) -
((rect.bottom - rect.top) /2), rect.right - rect.left, rect.bottom -
rect.top, TRUE);

Jak zjistit aktuální čas?

CTime now=CTime::GetCurrentTime();
CString hodiny=now.Format("%H:%M:%S");

Jak zjistit a nastavit kurzor myši?

//Zjištění
CPoint point;
GetCursorPos(&point);
//Nastavení
SetCursorPos(point.x+100,point.y+100);

Jak vypnout nebo restartovat PC?

//Vypnout
DWORD res;
ExitWindowsEx(EWX_FORCE,res);
ExitWindowsEx(EWX_SHUTDOWN,res);
//Restart
ExitWindowsEx(EWX_FORCE,res);
ExitWindowsEx(EWX_REBOOT,res);

Jak přehrát zvuk?

PlaySound("c:\\zvuk.wav", 0, SND_FILENAME | SND_ASYNC);

Jak dlouho běží Windows?

DWORD cas;
cas=GetTickCount(); //výsledek je v milisekundách

Jak uspat PC?

SetSystemPowerState(TRUE,TRUE);

Jak mít na pozadí okna obrázek?

HBITMAP m_pozadi; //členská proměnná
...
//Konstruktor
m_pozadi = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_POZADI);
...
//OnPaint()
CPaintDC dc(this);
RECT rect;
HBRUSH hbrush;
GetClientRect(&rect);
hbrush = CreatePatternBrush(m_pozadi);
FillRect(dc.m_hDC, &rect, hbrush);
DeleteObject(hbrush);
...
//Destruktor
DeleteObject(m_pozadi);

UPOZORNĚNÍ: Jedná se o archiv článků z let 2003 - 2005, uvedené technologie či postupy již mohou být neaktuální.