Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Диалоговое окно выбора цвета


Автор: D1m0n 8.11.2008, 18:20
По какой причине может не отображаться диалоговое окно выбора цвета?

Код

LRESULT CALLBACK MainWindow(HWND hwnd, UINT msg,
                WPARAM wParam, LPARAM lParam)
{ 
    static CHOOSECOLOR cc;

    switch (msg)
    { 
    case WM_DESTROY:
        {
            PostQuitMessage(0);
            return (0);
        }
    case WM_KEYDOWN:
    {
        int nVirtKey = (int)wParam;
        int tempX, tempY;
        if (nVirtKey == 87)
        {
                
            ChooseColor(&cc); // диалоговое окно не отображается
            return 0;
        }
    }
}

Автор: 586 8.11.2008, 18:55
Структуру CHOOSECOLOR надо заполнять перед вызовом функции ChooseColor.
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    COLORREF cr[16];     // здесь можно задать какие-нибудь особые цвета
    CHOOSECOLOR cc;

    memset(cr, 0, sizeof(cr));
    memset(&cc, 0, sizeof(cc));

    cc.lStructSize = sizeof(cc);
    cc.hwndOwner = Handle;     // дескриптор главного окна
    cc.rgbResult = RGB(255, 0, 0);   // значение цвета по умолчанию.
                    // после вызова функции ChooseColor здесь будет результат
    cc.lpCustColors = cr;
    cc.Flags = CC_RGBINIT;

    if(ChooseColor(&cc))
    {
        // пользователь нажал кнопку OK
        ShowMessage(IntToHex((int)cc.rgbResult, 8));
    } else {
        // пользователь нажал кнопку Отмена
    }
}

Автор: D1m0n 8.11.2008, 19:16
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)