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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13

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

Vinterfresh

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как оказалось, достаточно всего лишь убрать с WM_ERASEBKGND вызов стандартного для CView метода

Всего записей: 11 | Зарегистр. 02-07-2008 | Отправлено: 16:12 17-07-2008
von_Brutt



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
такой вопрос....какая среда разработки наиболее удобна под висту?? на домашнем компе стоит vista ultimate (64bit), устанавливать второю операционку желания нет...подскажите норм среду разработки.

Всего записей: 31 | Зарегистр. 29-10-2007 | Отправлено: 11:35 19-07-2008
Vinterfresh

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа-товарищи, выручайте. Никак не могу сделать следующую штуку: в SDI приложении создана перемещаемая панель, унаследованная от CControlBar, нужно запихнуть на нее объект, производный от CScrollView. Панель сделал, вьюшку примитивную тоже, теперь никак не пойму, как их связать. Не поделитесь ссылкой на какую-нибудь документацию по этой проблеме или куском кода - где и что инициализировать.
 
Добавлено:
Удивительная штука этот форум: стоит только задать вопрос - тут же сам находишь на него ответ. В качестве апгрейда предыдущего вопроса: на перемещаемой панельке создана вьюшка. Как из нее получить доступ к главному документу приложения?

Всего записей: 11 | Зарегистр. 02-07-2008 | Отправлено: 12:52 21-07-2008
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите можно ли сделать чтобы программа(MFC) не сворачивалась по нажатию сочетания системных клавиш Win+M, Win+D ???

Всего записей: 9209 | Зарегистр. 11-05-2006 | Отправлено: 04:48 24-07-2008
blackcat6600



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Удивительная штука этот форум: стоит только задать вопрос - тут же сам находишь на него ответ.  

хотелось бы...
Ребята, я понимаю что мой вопрос - офтоп но спросить больше негде.  
есть код на дельфи использующий gdi+ (gdiplus):

Код:
 
gpbm := TGPBitMap.Create('obIcons.png',true);
G := TGPGraphics.Create(Image1.Canvas.Handle );
G.DrawImage(GPbm, 0,0, 0,0, 16,16, UnitPixel);
 

отсюда видно что я хочу нарисовать первые 16х16 пикселей из исходной PNGшки.
НО ! уважаемые знатоки! в результате получаю мою отмасштабированную картинку размером 22х22 пихселя...  
 
Вот такая вот запара. Подскажите чево я делаю нетак и что сделать чтобы  
gdi+ не масштабировал мою картинку а рисовал ее в оригнале 1:1...

Всего записей: 58 | Зарегистр. 26-08-2005 | Отправлено: 16:42 24-07-2008
Qraizer



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Aleksoid1978, я бы препочёл, чтобы таких программ у меня не было. Поэтому не удивлюсь, если ответом будет "никак, кроме как вот таким грязным хаком...". Поясню: когда я нажимаю эти сочетания, я хочу увидеть рабочий стол. Я не хочу менять взаимное расположение открытых в данный момент окон, я не хочу 18 раз тыкать каждому окну в minimize и тем более не хочу закрывать открытые в некоторых из них дочерние можальные диалоги, я просто хочу на несколько секунд добраться до вон той иконки на столе. Какое право имеет твоя программа за меня решать, как мне удобнее?
P.S. У QIPа окошко полупрозрачное, умеет само скрыаться и в конце концов его легко можно закрыть/открыть system-wide акселератором. Так что хоть претензии остаются справделивыми, но для меня терпимо. Разумеется, всё это ИМХО, однако... В общем, выводы делай сам.

----------
Одни с годами умнеют, другие становятся старше.

Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 21:52 24-07-2008 | Исправлено: Qraizer, 21:59 24-07-2008
RaP1D



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скачал Visual C++ 2008 Express Edition и столкнулся с проблемой:
 
Создаю консольное приложение, пишу туда:

Цитата:
 
#include "stdafx.h"
#include "iostream.h"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    cout << "Please enter a number: ";
    cin >> n;
    for(int i=0; i<=n; i++)
    {
        cout << "\n i: " << i << " n: " << n;
    }
    cin >> n;
    return 0;
}
 

 
Нажимаю Ctrl+F5 и высвечивается окошко с ошибкой:

Цитата:
 
Unable to start program C:\Documents and Settings\ImpulSE\Мои документы\Visual Studio 2008\Projects\NEW\NEW\Debug\NEW.exe
 
Системе не удаётся найти указанный путь.
 

 
Что я сделал не так...
 
P.S. При создании Консольного приложения я выбирал Empty Project.

Всего записей: 186 | Зарегистр. 29-12-2007 | Отправлено: 15:21 26-07-2008 | Исправлено: RaP1D, 15:23 26-07-2008
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну а сам файл по этому пути создается?
Попробуй что-нибудь не такое длинное и сложное (C:\Project1, например ).

Всего записей: 2025 | Зарегистр. 02-09-2005 | Отправлено: 17:22 26-07-2008
RaP1D



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ItsJustMe
 
Неа, сам файл exe не создается. Пробовал C:\Project - то же самое.
Причем, если при создании я выбираю не Empty Project то все ОК, НО если в cpp файле я меняю содержимое main функции на то, что писал выше то опять не создает exe. Код вроде бы правильный, пробовал компилить на Builder'е все норм.
 
Тоже самое и с Win32 приложнием...
 
Все отбой, чет ступил - нада было #include "iostream" писать.

Всего записей: 186 | Зарегистр. 29-12-2007 | Отправлено: 19:24 26-07-2008 | Исправлено: RaP1D, 19:51 26-07-2008
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleksoid1978

Цитата:
Подскажите можно ли сделать чтобы программа(MFC) не сворачивалась по нажатию сочетания системных клавиш Win+M, Win+D

поставь диалогу свойство DS_SYSMODAL, хотя я согласен с Qraizer, прежде чем это ставить подумайте надо ли.

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 00:40 01-08-2008
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lyrik
 
Я разобрался, все оказалось очень просто - надо было сделать:
 
ДЛя того чтобы не минимизировалось окно делаем так -  
ModifyStyle(WS_MINIMIZEBOX, 0, SWP_NOZORDER);
 
Чтобы восстановить - ModifyStyle(0, WS_MINIMIZEBOX, SWP_NOZORDER);
 
и все.
 
З.Ы. - все равно всем спасибо ...
 

Всего записей: 9209 | Зарегистр. 11-05-2006 | Отправлено: 01:47 01-08-2008
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем добрый день!
Столкнулся с такой проблемой: при получении адреса функции я получаю не истинный адрес самой функции, а адрес в таблице импорта (как я думаю). Компилер: студия 2005 сп1. Следующий код под дебаг версией возращает не истинный адрес функции, хотя под релиз версией - все нормально работает.

Код:
DWORD WINAPI ThreadFunc( LPVOID );
...
{
     LPVOID lpPtr = ThreadFunc;
}

Можно ли как-то это исправить? Как я понимаю, это особенность компилера и может есть какой-то ключ, который бы не размещал эту функцию в таблице импорта.  
 
з.ы. как в дебаг версии достать настоящий адрес функции я могу, но для этого придется писать что-то типа следующего:

Код:
LPVOID lpPtr = ThreadFunc;
LPDWORD lpPtrDword = (LPBYTE)lpPtr + 1;
lpPtr = (DWORD)(*lpPtrDword) + (DWORD)lpPtr + 5;

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 18:24 13-08-2008 | Исправлено: Lyrik, 00:58 14-08-2008
klimusu



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите ка реализовать часы с тремя стрелками (часы,минуты,секунды)
мое предположение это нарисовать отрезок (вернее 3 отрезка) в событии paint и потом через таймер поворачивать этот рисунок на определенный угол.. и надо связать поворот с системными часами..  
как поворачивать рисунок? как прикрутить поворот к часам?

Всего записей: 931 | Зарегистр. 23-01-2006 | Отправлено: 15:35 22-09-2008
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
klimusu
Поворот отрезка можно реализовать с помощью пересчета проекций на оси X и Y. Новая координата по Х : x = d*sin(a), a по Y : y = d*cos(a). С учетом этого вот примерный код:

Код:
case WM_KEYUP:
    if ( wParam == 'S' ) {
        const DWORD d = 50;
        HDC hDC = GetDC( hWnd );
        int angle = -180;
        float rad = (angle*M_PI)/180;
        HPEN hPen = CreatePen( PS_SOLID, 0, GetBkColor(hDC) );
        HPEN hPenOld;
        while (1) {
            // рисую отрезок
            MoveToEx( hDC, 100, 100, NULL );
            LineTo( hDC, d*sin(rad)+100, d*cos(rad)+100 );
            // показываю его определенное время
            Sleep(1000);
            // закрашиваю отрезок
            hPenOld = (HPEN)SelectObject( hDC, hPen );
            MoveToEx( hDC, 100, 100, NULL );
            LineTo( hDC, d*sin(rad)+100, d*cos(rad)+100 );
            // задаю новый угол для нового отрезка и устанавливаю цвет
            angle -= 6;
            rad = (angle*M_PI)/180;
            hPen = (HPEN)SelectObject( hDC, hPenOld );
        }
        SelectObject( hDC, hPenOld );
        DeleteObject( hPen );
        ReleaseDC( hWnd, hDC );                
    }
    break;

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 17:24 22-09-2008
klimusu



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lyrik
я наверно не правильно понял.. я пытаюсь написать на visual studio 2008, глядя на ваш код теряюсь

Всего записей: 931 | Зарегистр. 23-01-2006 | Отправлено: 17:35 22-09-2008
klimusu



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот код

Всего записей: 931 | Зарегистр. 23-01-2006 | Отправлено: 20:26 22-09-2008
Lyrik

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
klimusu
я привел код для WinAPI, рисование будет по нажатию на кнопку S (в качестве примера). смысл я думал будет ясен: у вас есть отрезок с координатами (x1,y1;x2,y2) и длиной d. чтобы нарисовать его же, но повернутым на определенный угол, то тогда координаты нового отрезка будут (x1,y1;x3,y3), где x3=d*sin(a), y3 = d*cos(a). а - угол на который вы собираетесь повернуть. если же стрелки будут нарисованы не в начале координат, то необходимо будет прибавить смещение обеих осей.  

Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 00:34 23-09-2008
klimusu



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть picturebox1 размер 300на300
я загружаю туда картинку 1200на1200
как мне сделать масштабирование картинка в 300на300?

Всего записей: 931 | Зарегистр. 23-01-2006 | Отправлено: 18:31 26-10-2008
SUNGIRLANN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть проэкт в Visual Studia 6. Программа создаёт dll файл, при помощи которого в MATLAB передаются данные с С++. Проблема в том,что по здравому смыслу у меня величины x и m должны быть одинаковые. А программа выдаёт совершенно немыслимые числа для m. Помогите разобраться,пожалуйста.
#include <mex.h>
#include <math.h>
#include <stdio.h>
#include <string.h>  
#define raz 20
 
//Prototype:
void MyEmptyMexFunction(int,int, double*, double*);
//--------------------------------------
void mexFunction(int nOut,
mxArray* pOut[] )
{
int mm=20,nn=1; double *pO; double *pO1;
if (nOut > 0)  
{  
 
pOut[0] = mxCreateDoubleMatrix(mm,nn,mxREAL);
pOut[1] = mxCreateDoubleMatrix(mm,nn,mxREAL);
 
pO = mxGetPr(pOut[0]);
pO1 = mxGetPr(pOut[1]);
 
MyEmptyMexFunction(mm,nn,pO,pO1);
 
}
 
}
 
//------------Our own auxilary function----------------
 
void H(double* x, double* aq)
{
int i;
for (i=0;i<raz;i++) aq[i]=x[i];
}
 
 
void MyEmptyMexFunction(int mm, int nn, double* pO, double* pO1)
{
 
double x1[raz];
 
int n;
int i;
 
double m[raz];
double x[raz];
 
x[0]=-10;
n=0;
 
H(x,x1);
do  
{
 
x[n+1]=n;
m[n]=x1[n];
 
n++;
 
}
while(n<raz-1);
for (i=n;i<raz;i++)
{
m[i]=333;
x[i]=333;
}
 
memcpy(pO, m, i*sizeof(double));  
memcpy(pO1, x, i*sizeof(double));
}

Всего записей: 1 | Зарегистр. 11-12-2008 | Отправлено: 13:28 11-12-2008
trabelsi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня следующий вопрос: Создал приложение Windows.Form хочу добавить как источник данных - базу Access. Но среди источников данных есть только Object. В чем причина?

Всего записей: 40 | Зарегистр. 21-09-2007 | Отправлено: 20:58 28-03-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru