Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Nikosss



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос. Как нужно объявить массив, состоящий из компонент Button?
К примеру пишу:
 
TButton a[10];
 
Мне это нужно, чтобы иметь возможность перебирать через цикл компоненты Button1, Button2, Buttton3, ... Может кто-то подскажет лучший вариант?

Всего записей: 46 | Зарегистр. 11-07-2005 | Отправлено: 19:14 12-01-2007
Jokerjar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может так будет работать?

Код:
TButton * rb[10];
...
for (int i=0;i<=9;i++)
  rb[i] = (TButton *)(FindComponent("Button"+IntToStr(i+1)));

а потом обращаешься к элементам массива вместо компонентов (rb[0] = Button1, rb[1] = Button2 и т.д.)

Всего записей: 591 | Зарегистр. 22-03-2006 | Отправлено: 05:29 13-01-2007 | Исправлено: Jokerjar, 05:36 13-01-2007
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nikosss
Я же тебе ответил, предыдущий пост? И зачем свой пост дублировать?
 
Jokerjar
По-моему, это не предмет этой темы.

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 09:14 13-01-2007
Collapse Troll

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте!  
 
У меня к вам даже 2 вопроса.
 
1) В windows справа от кнопки start обычно есть иконка - "Свернуть все" или "Show Desktop". Это одна команда, или последовательное сворачивание всех окон? Как это сделать на винапи?  
 
2) возможно ли как-то программно отключить флешку? Не обязательно на чистом winapi, может есть какие-то библиотечные функции (из .NET фреймворка к примеру)

Всего записей: 792 | Зарегистр. 05-08-2006 | Отправлено: 16:58 28-02-2007 | Исправлено: Collapse Troll, 16:59 28-02-2007
tomegadeth



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Collapse Troll - ответ на первый вопрос

Код:
 
#include "windows.h"
 
// 407 - ShowDesktop
 
void DoAction(unsigned int pAction)
{
   static HWND hShellWnd = FindWindow("Shell_TrayWnd", NULL);
         
   if(hShellWnd != NULL)
      PostMessage(hShellWnd, WM_COMMAND, MAKELONG(pAction, 0), NULL);  
   else
      hShellWnd = FindWindow("Shell_TrayWnd", NULL);  
}
 
int main(int argc, char* argv[])
{
   DoAction(407);
   return 0;
}
 

Всего записей: 560 | Зарегистр. 22-11-2004 | Отправлено: 21:48 28-02-2007
Collapse_Troll

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
tomegadeth, спасибо, это 5!

Всего записей: 792 | Зарегистр. 05-08-2006 | Отправлено: 10:02 01-03-2007
MorisA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Создание таблицы.
 
Подскажите пожалуйста, как создать таблицу в Visual C++.  
  Пытался создать путём мастера, с помощью панели Controls. Добавляю Custom Control, прописываю имя класса, а так же id...  что нужно дальше делать? Как обрашаться к ячейкам, добалять данные, брать их от туда, выводить на экран?

Всего записей: 33 | Зарегистр. 04-12-2006 | Отправлено: 03:30 10-03-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MorisA
Идешь на CodeProject, берешь MFCGridCrtl, радуешься.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 10:13 10-03-2007
MorisA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Garrett
Как я понимаю сайт www.codeproject.com, там такой функции нет,  поиск тоже результатов не даёт.

Всего записей: 33 | Зарегистр. 04-12-2006 | Отправлено: 20:23 10-03-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MorisA
Это не функция, а контрол. Искать надо лучше. Эх, молодежь, молодежь...
Вот ссылка - http://www.codeproject.com/miscctrl/gridctrl.asp

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 21:24 10-03-2007
MorisA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
<b>Garrett</b>
  Проблема не в том, что я найти не могу, ибо похожий проект я находил, только не на этом сайте, а в том что комментариев которые даны к данному контрлу для меня маловато. Почти ничего не понятно, проект урезал, выкинул лишние файлы, функции... в данном проекте всё компилиться, работает нормально, можно данные заносить, изменять ....
    Создаю свой точно такой же проект, MFC AppWizard(exe), сначала добавляю таблицу, даю точно такое же имя класса, затем вписываю точно те же переменные как и том проекте, в BOOL CGridCtrlDemoDlg::OnInitDialog(), и точно так же с другими файлами... затем подключаю основные файлы, с того проекта, их я не менял. Всё компилиться, линкуеться нормально, но когда пытаешься запустить exe файл выскакивает ошибка:
"Debug Assertion Failed, Programm: ...., File: afxwin2.inl, Line: 112"
нажимаешь пропустить ещё пару похожих ошибок, затем запускаеться окно, но без таблицы.  
   И классы сравнивал, и переменные с предыдушим проектом, всё точно также, там они работают, а у меня нет.  
 
   Чё делать не знаю, перечитал всю документацию по этому контрлу, но проблему так решить и не могу.  
 

Всего записей: 33 | Зарегистр. 04-12-2006 | Отправлено: 06:38 13-03-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MorisA
Этим контролом пользуются десятки тысяч человек, не без мелких ошибок, но он рабочий.
Лично у меня в промышленной программе работает уже второй или третий год.
 
Ошибки контрола ищутся по его форуму, там есть анонсы не только ошибок/проблем, но и их фиксы. Имхо, если нужно редактирование данных, то это лучший контрол с адекватным поведением.
А если тебе нужно только выводить данные, то используй CListCtrl в режиме рипорта.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 08:21 13-03-2007
Thritt



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! у меня возникла проблема с созданием контекстного меню в приложении Win32.  
 
///// main.cpp ////////////
#include <windows.h>
#include "resource.h"
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrInst, LPSTR lpCmdLine, int nShowCmd)
{
    HWND hWnd;
    char WndClassName[] = "wndclassname";
    MSG msg;
    WNDCLASSEX wnd;
    wnd.cbClsExtra = 0;
    wnd.cbSize = sizeof(wnd);
    wnd.cbWndExtra = 0;
    wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
    wnd.hIcon = 0;
    wnd.hIconSm = 0;
    wnd.hInstance = hInst;
    wnd.lpfnWndProc = WndProc;
    wnd.lpszClassName  = WndClassName;
    wnd.lpszMenuName = 0;
    wnd.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClassEx(&wnd);
 
    hWnd = CreateWindow(WndClassName, "Context Menu", WS_OVERLAPPEDWINDOW,
        100, 100, 500, 300, NULL, NULL, hInst, NULL);
 
    ShowWindow(hWnd, nShowCmd);
    UpdateWindow(hWnd);
 
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HMENU menu;
    int x, y;
 
    switch (msg)
    {
// наверное что-то неладное у меня в следующем коде:
///////////////////////////////////////////////////////////////////////////////////////////////////////
    case WM_CREATE:
        menu = LoadMenu(GetModuleHandle(NULL), MAKEINTRESOURCE(IDM_CONTEXT));
        menu = GetSubMenu(menu, 0);
        break;
    case WM_CONTEXTMENU:
        x = LOWORD(lParam);
        y = HIWORD(lParam);
        TrackPopupMenuEx(menu, 0, x, y, hWnd, NULL);
        break;
////////////////////////////////////////////////////////////////////////////////////////////////////////
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
    return 0;
}
 
//////////////////////////////////////// resource.h /////////////////////////////////
#define IDM_CONTEXT 1000
#define ID_COM_1   1001
#define ID_COM_2   1002
#define ID_COM_3   1003
 
в книжке написано что нужно  определить нулевой пункт меню нулевого уровня как подменю, имеющее какое-нибудь условное имя.
 
//////////////////// resource.rc /////////////////////////////////
1000   MENU   DISCARDABLE
BEGIN
    POPUP "menu"
    BEGIN
        MENUITEM    "Command1"   1001
        MENUITEM    "Command2"   1002
        MENUITEM    "Command3"   1003
    END
END
 
в итоге никакого контекстного меню не появляетс
Подскажите пожалуйста в чем проблема.

Всего записей: 79 | Зарегистр. 10-07-2006 | Отправлено: 23:54 20-04-2007
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Thritt
проблема видимо в том, что ты создаешь автоматическую переменную menu, а она нужна статическая:

Код:
static HMENU menu;

К сожалению компилера нет под рукой, так что проверить не могу Но думаю, а точнее практически уверен, что ошибка в этом

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 00:11 21-04-2007
Thritt



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lyrik
 
Огромное спасибо за помощь!

Всего записей: 79 | Зарегистр. 10-07-2006 | Отправлено: 11:54 21-04-2007
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пишу службу. Как правильно организовать взаимодействие службы с пользователем.
Предполагаю такое решение:
1) есть служба, которая запускается автоматически и выполняет необходимые действия (например это некоторый TCP-сервис). При запуске сервера (на котором зарегистирована эта служба) служба автоматически стартует.
2) Если в систему входит некоторый пользователь, - хочется в трэе отображатть некоторую иконку, из контекстного меню которой можно будет останавливать и запускать эту службу - а также, возможно, конфигурировать параметры службы.


Так вот, собственно, вопрос: можно ли как-то из службы определить, что пользователь залогинился, чтобы запустить GUI-шную часть? Или это неправильный план .
Нужно ли делать для службы и для конфигурационной части разные exe-файлы, или можно это в один файл засунуть?
В общем, кто занимался подобными проблемами - поделитесь опытом.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 16:37 23-04-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
у меня вопрос.
как сделать чтоб при нажатии правой кнопкой мыши на окне в том месте появлялось меню??
я пытался в 'WindowProcedure' сделать 'case WM_RBUTTONDOWN:' и создать обычное меню но у меня ничего не получилось..
я новичок, пожалуйста помогите с вопросом

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 15:00 19-05-2007
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Нужно использовать TrackPopupMenu или TrackPopupMenuEx. Если нет локального msdn, то почитать можно здесь

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 15:17 19-05-2007
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FireZone
А пример мона взять на несколько постов выше
Смотри пост Thritt!  

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 15:40 19-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
огромное спасибо.!
все получилось !
 
теперь есть еще один маленький вопрос.
как узнать разрешение экрана

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 16:55 19-05-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru