Cześć
Odgrzewam kotlet, ale i tak mało się dzieje ;)
Tak na szybko kilka punkcików
1. jak używasz STL to może nie dawaj rozszerzenia *.c, od tak dla czytelności + domyślnego interpretowania przy kompilacji ;)
2. w 1654 w HWND wpisujesz booleana (g_findhWnd & g_replacehWnd), HWND to wskaźnik, nie wszystkie kompilatorki to puszczą (dałbym nullptr)
3. HRESULT hResult = PrintDlg(&pd);
if (hResult == 0) return false;
To jest dziwnie zapisane. Będzie działać ale PrintDlg zwraca BOOL, a HRESULT 0 to S_OK, więc jak hResult będzie S_OK to uciekasz, a jak S_FALSE to kontynuujesz... ;)
4. Tu są małe błędy (i inne linijki tego typu) : CheckMenuItem(hMenu, CM_VIEW_CLOCK, MF_BYCOMMAND | (statusclock) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_VIEW_STATB, MF_BYCOMMAND | (statusbar) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_VIEW_NUMB, MF_BYCOMMAND | (linenumber) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_VIEW_NEGAT, MF_BYCOMMAND | (negative) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_FORM_LEFT, MF_BYCOMMAND | (leftalign) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_FORM_RIGHT, MF_BYCOMMAND | (rightalign) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_VIEW_HRULER, MF_BYCOMMAND | (hshowruler) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_VIEW_VRULER, MF_BYCOMMAND | (vshowruler) ? MF_CHECKED : MF_UNCHECKED);
Operator | ma wyższy priorytet nad ?:, więc najpierw będzie ustawienie bitków a dopiero porównanie. Działa Ci fuksem tylko dlatego, że MF_BYCOMMAND ma wartość 0. Zmień sobie na coś innego (dla testu) i zobaczysz, że bez względu na sprawdzanego booleanka zawsze dostaniesz MF_CHECKED. Nawiasik powinien objąć całe wyrażenie ?:
4. To linenumber (ifek) tak ma być ? :) Może czytelniej by było nie miksować z case-ami
LRESULT CALLBACK NewWndProc(HWND hwnd, UINT mesg, WPARAM wParam, LPARAM lParam)
{
switch (mesg)
{
if (linenumber)
case WM_KEYDOWN:
{
int hml = (int)SendMessage(g_hEdit, EM_GETLINECOUNT, 0, 0);
5. Tu masz malutkie wycieki z HDC. Linijki 1409 i 1427. Powinien być ReleaseDC dodany.
HDC hdc = GetDC(g_hEdit);
SetTextAlign(hdc, TA_LEFT);
rightalign = false; leftalign = true;
HMENU hMenu = GetMenu(hwnd);
CheckMenuItem(hMenu, CM_FORM_LEFT, MF_BYCOMMAND | (leftalign) ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, CM_FORM_RIGHT, MF_BYCOMMAND | (rightalign) ? MF_CHECKED : MF_UNCHECKED);
}
break;
Pzd.