Операционные системы ЗР, страница 2

//Нажатие на кнопку СОХРАНИТЬ ФАЙЛ

            case IDC_SAVE:

ofn.lpstrFile=szFileName;

                        ofn.lpstrFileTitle=szTitleName;

                        ofn.Flags=OFN_OVERWRITEPROMPT;

                        GetSaveFileName(&ofn);

                        hList1= GetDlgItem (hWnd, PVIEW_COMPUTER);

                        SendMessage(hList1,EM_EXSETSEL, 0, (LPARAM)&szSel);

                        SendMessage(hList1,EM_REPLACESEL,0,(LPARAM)szFileName);

                        hList1= GetDlgItem (hWnd,IDC_EDIT1);

                        SendMessage(hList1,EM_EXSETSEL, 0, (LPARAM)&szSel);

                        SendMessage(hList1,EM_REPLACESEL,0,(LPARAM)szTitleName);

            break;


ОКНО ВЫБОРА  ШРИФТА

Создаем кнопку FONT и на нее вешаем код:

//Нажатие на кнопку Выбор шрифта

case IDC_FONT:

GetObject(GetStockObject(SYSTEM_FONT),   sizeof(LOGFONT), (PSTR)&logfont);

ChooseFont (&cf);

/*

установка нового фонта в приложении

*/

break;

А для того, чтобы все это заработало надо описать и инициализировать следующие переменные и структуры:

static HFONT hFont;

static LOGFONT logfont;

static CHOOSEFONT cf;

switch (wMsg)

{

// Сообщение о инициализации диалогового окна

case WM_INITDIALOG:

InitCommonControls();

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

//инициализация структуры для окна шрифтов

cf.lStructSize=sizeof(CHOOSEFONT);

cf.hwndOwner=hWnd;

cf.hDC=NULL;

cf.lpLogFont=&logfont;

cf.iPointSize=0;

cf.Flags=CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS | CF_EFFECTS;

cf.rgbColors=0L;

cf.lCustData=0L;

cf.lpfnHook=NULL;

cf.lpTemplateName=NULL;

cf.hInstance=NULL;

cf.lpszStyle=NULL;

cf.nFontType=0;

cf.nSizeMin=0;

cf.nSizeMax=0;

break;

Окно заполняет структуру logfont, из полей которой потом можно получить всю необходимую информацию о выбранном шрифте.


ОКНО  ВЫБОРА ЦВЕТА

Создаем кнопку COLOR и на нее вешаем код:

//Нажатие на кнопку Выбор ЦВЕТА

case IDC_COLOR:

ChooseColor (&cc);

/*

использование выбранного цвета

*/

break;

А для того, чтобы все это заработало надо описать и инициализировать следующие переменные и структуры:

static CHOOSECOLOR cc;

static COLORREF crCustColors[16];

switch (wMsg)

{

// Сообщение о инициализации диалогового окна

case WM_INITDIALOG:

InitCommonControls();

//инициализация структуры окна выбора цвета

cc.lStructSize=sizeof(CHOOSECOLOR);

cc.hwndOwner=NULL;

cc.hInstance=NULL;

cc.rgbResult=RGB(0x80, 0x80, 0x80,);

cc.lpCustColors=crCustColors;

cc.Flags=CC_RGBINIT | CC_FULLOPEN;

cc.lCustData=0L;

cc.lpfnHook=NULL;

cc.lpTemplateName=NULL;

break;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

}

Окно заполняет структуру crCustColors, из полей которой потом можно получить всю необходимую информацию о выбранном цвете.


ОКНА  ПОИСКА  и  ЗАМЕНЫ

Дополнительные переменные:

char szFindText[256];

char szReplText[256];

FINDREPLACE fr;

Инициализация структуры для окна поиска:

fr.lStructSize=sizeof(FINDREPLACE);

fr.hwndOwner=hWnd;

fr.hInstance=NULL;

fr.Flags=FR_HIDEUPDOWN | FR_HIDEMATCHCASE | FR_HIDEWHOLEWORD;

fr.lpstrFindWhat=szFindText;

fr.lpstrReplaceWith=NULL;

fr.wFindWhatLen=sizeof(szFindText);

fr.wReplaceWithLen=0;

fr.lCustData=0;

fr.lpfnHook=NULL;

fr.lpTemplateName=NULL;

Обработка нажатия на клавишу FIND

case IDC_FIND:

FindText (&fr);

/*  здесь собственно выполнение поиска */

break;


Окно выбора принтера

//Дополнительные переменные:

static PRINTDLG pd;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

//Инициализация структуры для окна ПРИНТЕРА:

pd.lStructSize=sizeof(PRINTDLG);

pd.hwndOwner=hWnd;

pd.hDevMode=NULL;

pd.hDevNames=NULL;

pd.hDC =NULL;

pd.Flags=PD_ALLPAGES | PD_COLLATE | PD_RETURNDC;

pd.nFromPage=0;

pd.nToPage=0;

pd.nMinPage=0;

pd.nMaxPage=0;

pd.nCopies=1;

pd.hInstance=NULL;

pd.lCustData=0L;

pd.lpfnPrintHook=NULL;

pd.lpfnSetupHook=NULL;

pd.lpPrintTemplateName=NULL;

pd.lpSetupTemplateName=NULL;

pd.hPrintTemplate=NULL;

pd.hSetupTemplate=NULL;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

//Обработка нажатия на клавишу PRINT:

case IDC_PRINT:

PrintDlg (&pd);

break;