Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2] 3  Все   Вниз
  Печать  
Автор Тема: Утилита для ограничения времени работы за компьютером  (Прочитано 59890 раз)
0 Пользователей и 1 Гость смотрят эту тему.
v.korleone
Помогающий

ua
Offline Offline

« Ответ #30 : 17-09-2009 14:50 » 

Артем, Джон спасибо. Насчет MFC, пока не знаю, хотелось бы с таймером разобраться  Улыбаюсь а когда до создания окон дойду - тогда посмотрим.
Цитата
IDT_TIMER1 - должен быть константой, такого же типа как и wParam
А чему должно равняться начальное значение IDT_TIMER1? Ведь запись const WPARAM IDT_TIMER1 будет некоректной.
И еще вопрос: зачем вообще в коде конструкции case и switch? Был здесь http://www.cyberguru.ru/cpp-sources/system/ispolzovanie-tajmerov.html, написано следующее:
Цитата
Чтобы обработать сообщения WM_TIMER, генерируемые этими таймерами, добавьте выражение case WM_TIMER в оконную процедуру для параметра hwnd .
Пример:
case WM_TIMER:
switch (wParam)
{
case IDT_TIMER1:
// обрабатываем 10-ти секундный таймер
return 0;
.....
}
Не пойму, конструкция case, со слов Артема неправильная, зачем ее тогда приводить в качестве примера (в статье)?
Пробовал сделать так:
Код:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
HWND mw; //дескриптор файла
const WPARAM IDT_TIMER1=1; // тип таймера
WPARAM wParam;

SetTimer(mw, // хэндл главного окна
IDT_TIMER1, // идентификатор таймера
10000, // интервал - 10 секунд
(TIMERPROC) NULL); // процедуры таймера нет

switch (wParam)
{
case IDT_TIMER1:
// обрабатываем 10-ти секундный таймер
return 0;
}
// Удаляем таймер.
KillTimer(mw, IDT_TIMER1);
getch();
return 0;
}
Все хорошо, но при запуске проги пишет это: " The variable 'mw' is being used without being initialized." т.е.  "Переменная 'mw' используется без инициализации" и прога виснет.
« Последнее редактирование: 17-09-2009 17:27 от v.korleone » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #31 : 17-09-2009 18:12 » 

когда до создания окон дойду - тогда посмотрим.

Блин, это гораздо хуже чем я думал. Жаль

Ты понимешь, вобще-то WM_TIMER это сообщение, которое получет окно. Так что окно необходимо создать ДО разборок с таймером. Без него никуда. Всё, что ты описал ниже является следствием этого "недоразумения".

В общем я так думаю, что тебе может помочь или Петцольд или уже никто. Жаль
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
v.korleone
Помогающий

ua
Offline Offline

« Ответ #32 : 18-09-2009 03:26 » new

Джон, я же говорил работал только с консолью и когда читал это
Цитата
добавьте выражение case WM_TIMER в оконную процедуру для параметра hwnd .
думал, что имеется ввиду окно консоли, тогда у меня был вопрос: "если это так то куда собственно WM_TIMER добавлять?". Спасибо, теперь все стало на места, пожалуй буду юзать MFC, чтобы не лезть в дебри. По совету Артема, буду делать это:
Цитата
Если же у тебя есть пара месяцев и желание разобраться -- для начала напиши программу, которая просто показывает окно на экране.  Простое пустое окно, с тремя стандартными кнопочками в верхнем правом углу ("свернуть", "во весь экран", "Закрыть")
.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #33 : 18-09-2009 06:34 » 

Да, с такого окошка следует начинать. Хотя с MFC это и делается проще, но вся кухня от тебя скрывается. Когда ты хочешь с ней "разбираться" решать тебе. Одно только скажу без этого никуда. Тебе надо усвоить и освоить три вещи:

1. Программирование (не путать с языком программирования). Тут тебе в помощь книжки по логике, алгоритмам, теории программировани, численым методам и тд и тп.

2. Среду (API) той системы, под которой ты собираешься создавать приложения: виндовс (тут я тебе ещё раз порекомендую Петцольда), линух, макинтош, ДОС Ага .  Другими словами, тебе нужен справочник по ф-ями и свойствам системных библиотек. Для винды на сегодняшний день это MSDN.

3. Язык программирования и его библиотеки расширения. Сюда же можно отнести и IDE - среду разработки, например MS VisualStudio. Опять же, какой именно язык и IDE решать тебе. Под виндой сейчас выделяются два основных С++ и С#. У каждого из них есть свои плюсы и минусы. И в конечном итоге при условии соблюдения п.п. 1 и 2 ты можешь "запросто" освоить оба этих языка.

Не знаю как у тебя с 1 и 3, мы сейчас пока разбираемся с 2. Тебе необходимо знать как винда работает, каким образом взаимодействуют её компоненты и тд и тп. Это не имеет никакого отношения ни к программированию, ни к языку.
У Петцольда очень хорошо систематично это всё описано. Ну и как справочник ессно MSDN.

зы Последний пинок в сторону MFC, запусти студию и создай диалоговый проект. Внимательно разберись с опциям в мастере создания проекта. Пока только для диалога! Что будет не понятно или не найдёшь в помощи, спросишь здесь, на форуме. Потом можешь сделать тоже самое на чистом API. Это будет очень полезно в плане понимания MFC. Как плюсов, так и минусов.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
v.korleone
Помогающий

ua
Offline Offline

« Ответ #34 : 18-09-2009 14:33 » 

Джон, большое спасибо, за советы! Уже качаю Петцольда... Буду разбираться.

Начал читать Петцольда, так там речь идет о С#, с которым не знаком. Неужели нужно будет переучиваться на С#?
« Последнее редактирование: 07-10-2009 15:10 от Sel » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #35 : 27-09-2009 22:49 » 

v.korleone, "Ну вы блин даёте." (с)

Можно конечно и на додиез переучиться, но лучше всё-таки взять "правильную" книгу:
http://www.charlespetzold.com/pw5/index.html

Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
v.korleone
Помогающий

ua
Offline Offline

« Ответ #36 : 28-09-2009 14:45 » 

Джон, спасибо, нашел на русском языке 2 тома. Поскольку первая книга, котороя была мной найдена, действительно толковая и доступно написана, была идея писать на С#. Еще раз благодарю, за помощь, буду читать.
Записан
v.korleone
Помогающий

ua
Offline Offline

« Ответ #37 : 05-10-2009 15:00 » 

Приветствую вас, господа програмисты. Разбираюсь с созданием окна, читаю здесь: http://www.firststeps.ru/mfc/steps/r.php?30 Возник вопрос, относительно этого
Цитата
А вот теперь нам надо создать переменную для нашего списка. Выделяем его мышкой. Правую клавишу нажимаем и выбираем ClassWizard. А там вкладку Member Variable. Двойной щелчок на IDC_LIST. И после m_ вводим имя переменной. Подтверждаем OK и всё закрываем. Обратите внимание на Category, это очень важно.
Нажимая правую кнопку мыши никакого ClassWizard нет. Насколько я понял у автора раняя версия VS++, у меня VS++ 2003. Где мне найти указаное автором окно с настройками?
« Последнее редактирование: 05-10-2009 18:02 от v.korleone » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #38 : 06-10-2009 19:17 » 

Ctrl+ClickClick
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
v.korleone
Помогающий

ua
Offline Offline

« Ответ #39 : 07-10-2009 13:26 » 

Джон, спасибо.
Перешел сюда: http://www.firststeps.ru/mfc/steps/r.php?32, делаю это:
Цитата
// diaDlg.h : header file
//
#if !defined(AFX_DIADLG_H__EBFF09CD_7067_11D5_B617_89F1B6D3EB46__INCLUDED_)
#define AFX_DIADLG_H__EBFF09CD_7067_11D5_B617_89F1B6D3EB46__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define ID_TIMER_1 100
/////////////////////////////////////////////////////////////////////////////
// CDiaDlg dialog
При компиляции пишет это: "d:\My Project\Timer\TimerDlg.h(39): fatal error C1070: mismatched #if/#endif pair in file 'd:\my project\timer\timerdlg.h'" что делать?
« Последнее редактирование: 07-10-2009 14:24 от v.korleone » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #40 : 07-10-2009 14:31 » 

замени код
Код:
// diaDlg.h : header file
//
#if !defined(AFX_DIADLG_H__EBFF09CD_7067_11D5_B617_89F1B6D3EB46__INCLUDED_)
#define AFX_DIADLG_H__EBFF09CD_7067_11D5_B617_89F1B6D3EB46__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define ID_TIMER_1 100
/////////////////////////////////////////////////////////////////////////////
// CDiaDlg dialog

на следующий

Код:
// diaDlg.h : header file
#pragma once

#define ID_TIMER_1 100
Записан

v.korleone
Помогающий

ua
Offline Offline

« Ответ #41 : 07-10-2009 18:29 » 

Алексей1153++, спасибо - пробую.
Записан
v.korleone
Помогающий

ua
Offline Offline

« Ответ #42 : 14-10-2009 18:02 » 

Подскажите, пожалуйста, что делать. Делаю сейчас этот пункт: http://www.firststeps.ru/mfc/steps/r.php?32
Все сделал, все компилится, линкуется даже появляется окно таймера, но при нажатии на любую из кнопок, появляется окно вида:

Видать где-то привязки событий к кнопкам нет  А черт его знает...
Вот коды:
DiaDlg.h
Код:
// DiaDlg.h : header file
//
#pragma once
#define ID_TIMER_1 100
#include "afxwin.h"


// CDiaDlg dialog
class CDiaDlg : public CDialog
{
// Construction
public:
CDiaDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
enum { IDD = IDD_DIA_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support


// Implementation
afx_msg void OnTimer(UINT); // функция реакции на таймер
bool Test;         // установка удаление таймера
protected:
HICON m_hIcon;

// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
DECLARE_MESSAGE_MAP()
public:
CListBox m_List;
};


DiaDlg.cpp
Код:
// DiaDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Dia.h"
#include "DiaDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

bool Test;
// CDiaDlg dialog

CDiaDlg::CDiaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDiaDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
Test=false; // таймер не установлен
}

void CDiaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_List);
}

BEGIN_MESSAGE_MAP(CDiaDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_WM_TIMER() // реагировать на таймер
END_MESSAGE_MAP()


// CDiaDlg message handlers

BOOL CDiaDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here
m_List.AddString("Hello"); // Заносим наши данные
m_List.AddString("App");
m_List.AddString("Wizard");
return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CDiaDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

void CDiaDlg::OnTimer( UINT uTime)
{
m_List.AddString("Timer !");
}

void CDiaDlg::OnButton1()
{
  if (!Test)    // если таймер не установлен
  {
  Test=true;    // установить его (логически)
  SetTimer(ID_TIMER_1,1000,NULL);  // а теперь физически
  }
  else    // а иначе (установлен)
  {
  Test=false;    // убить логически
  KillTimer(ID_TIMER_1);    // физически
  }
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CDiaDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #43 : 14-10-2009 19:58 » 

Немножко неграмотно сделано. Но вроде всё правильно. Попробуй вот так:

Код:
void CDiaDlg::OnTimer( UINT uTime)
{
    if(uTime==ID_TIMER_1)
    {
    m_List.AddString("Timer !");
    }
    CDialog::OnTimer(uTime);
}
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #44 : 14-10-2009 20:04 » 

Вот деструктор, в котором вызывается ассёршн.

Код:
CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
if (m_xDispatch.m_vtbl != 0)
((COleDispatchImpl*)&m_xDispatch)->Disconnect();
ASSERT(m_dwRef <= 1);
#endif
#ifdef _AFXDLL
m_pModuleState = NULL;
#endif
}

Ща попробую твой код.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #45 : 14-10-2009 20:13 » 

Нет, всё работает как часы таймер. Вот твой код один в один.

* Diadlg.zip (42.91 Кб - загружено 738 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
v.korleone
Помогающий

ua
Offline Offline

« Ответ #46 : 14-10-2009 20:52 » 

Джон, большое спасибо! Буду разбираться.
Записан
v.korleone
Помогающий

ua
Offline Offline

« Ответ #47 : 11-11-2009 13:52 » 

Занимаюсь, сейчас этими пунктами:
  • таймер должен включаться при любом активном действии пользователя (нажатие клавиши клавиатуры или движение мышью);
  • если больше трех минут нет активности пользователя (нажатие клавиш клавиатуры или движений мыши), таймер должен останавливаться;
  • после завершения периода активной работы должно выводиться окно программы (с сообщением о необходимом отдыхе), из которого нельзя выйти доступными путями.
Подскажите, пожалуйста, что и как. Может ссылки толковые. Пишу на Visual C#. Спасибо.
« Последнее редактирование: 11-11-2009 13:54 от v.korleone » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #48 : 11-11-2009 17:36 » 

По первым двум я бы пошел путем наименьшего сопротивления и вешал бы глобальный хук на мышь и клаву. А по последнему даже не знаю, поменял бы "вслепую" пароль на скринсейвере, и сделал бы свой "скринсейвер" с сообщением о необходимости отдыха. С паролем правда сложнее - я не знаю как его поменять. В 98 винде можно было легко вырубить клаву и мышку.
« Последнее редактирование: 11-11-2009 17:38 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
zubr
Гость
« Ответ #49 : 12-11-2009 03:49 » 

По третьему можно все окна в системе сделать невидимыми (EnumWindow, ShowWindow (  SW_HIDE)), а оставить видимым только свое окно.
Записан
v.korleone
Помогающий

ua
Offline Offline

« Ответ #50 : 12-11-2009 15:21 » 

PooH,  zubr, спасибо. Почитал, некоторые статьи, попробовал кодить. Собственно вот:
Файл Form1.cs
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

// строка помогающая использовать унаследованный код
using System.Runtime.InteropServices;

namespace TimerWork
{
    //public partial class Form1 : Form
    public class MainForm : System.Windows.Forms.Form
    {
    //получаем и настраиваем функции из среды С и С++
     delegate bool CallbackDef(int hWnd, int IParam);
     [DllImport("user32.dll")]
     static extern int EnumWindows (CallbackDef callback, int IParam);
     //static bool PrintWindow(int hWnd, int IParam);

    [DllImport("user32.dll")]
    private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
  
        public MainForm()
        {
            InitializeComponent();
            bool show = false;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        CallbackDef callback = new CallbackDef(PrintWindow);
        Showwindow(EnumWindows(callback, 0), sw_hide);
        }
      
    }
}
Файл Form1.Designer.cs
Код:
namespace TimerWork
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            //
            // Form1
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }

        #endregion
    }
}
Подчеркивает слово Dispose в этой строке "protected override void Dispose(bool disposing)" и пишет:

Form1.Designer.cs(14,33): error CS0115: 'TimerWork.Form1.Dispose(bool)': no suitable method found to override

Что делать?
« Последнее редактирование: 12-11-2009 15:25 от v.korleone » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #51 : 12-11-2009 16:09 » 

а в базовом классе есть void Dispose(bool disposing) ?
Записан

Удачного всем кодинга! -=x[PooH]x=-
zubr
Гость
« Ответ #52 : 12-11-2009 16:15 » 

По ошибке компиляции помочь не могу, я с C# слабо знаком. А вот Showwindow(EnumWindows(callback, 0), sw_hide); не понял. 1-й параметр функции Showwindow - хендл окна, а EnumWindows возвращает совсем другое. Тебе надо в теле CallBack-функции делать Showwindow, где хендл - параметр hwnd CallBack-функции.
Записан
v.korleone
Помогающий

ua
Offline Offline

« Ответ #53 : 12-11-2009 19:08 » 

PooH а где можно это посмотреть этот базовый класс?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #54 : 12-11-2009 19:12 » 

щёлкнуть правой кнопкой мыши по имени класса и перейти к определению )
Записан

v.korleone
Помогающий

ua
Offline Offline

« Ответ #55 : 12-11-2009 19:29 » 

Алексей1153++, пробую пункт "Go to definition" и курсор стает на место Dispose.  А черт его знает...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #56 : 12-11-2009 19:38 » 

странно. Я точно не помню, там вроде ещё есть пункт - названия тоже не помню. Пробуй, должно перейти где то
Записан

v.korleone
Помогающий

ua
Offline Offline

« Ответ #57 : 12-11-2009 19:59 » 

На одном из форумов (http://forum.codenet.ru/showthread.php?t=54440) нашел это, относительно Dispose:
Цитата
Это частичный класс. Более того, это не основное его определение - лишь код, формированный дизайнером форм. Вероятно при компиляции не включается файл с содержимым вида:
Код:
namespace ProjNamespace.GUI
{
    public partial class MianForm : Form
    {
        public MianForm() {
            InitializeComponent();
        }
    }
}
После этого ответа, человек у которого была точно такая проблема, вдруг все понял  Улыбаюсь Мне описанная выше цитата ничего не говорит, может кто-то взглянув поймет о чем идет речь и где искать выход?
P.S. Алексей1153++, может я неправильно что-то делаю и что должно быть конечным результатом, должно появится окно или еще что-то? Мои действия: становлюсь в описаном выше файле Form1.Designer.cs, на слове Dispose, в строке protected override void Dispose(bool disposing), жму правую кнопку мыши и выбираю пункты из контекстного меню, перепробовал практически все.
« Последнее редактирование: 13-11-2009 06:23 от v.korleone » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #58 : 12-11-2009 21:46 » 

Цитата
Это частичный класс. Более того, это не основное его определение - лишь код, формированный дизайнером форм
я по ссылке не ходил, но скорее всего, вопрос там был про модификатор partial - он позволяет описывать класс в нескольких блоках. Так, например, почти все там классы, созданные визардом, сделаны - описание контролов в одном файле, свой код в другом.

Цитата
может я неправильно что-то делаю ... становлюсь .... на слове Dispose
конечно неправильно: тебе же надо не эту функцию найти, а класс родителя твоего класса! Улыбаюсь

например
Цитата
public partial class MianForm :  >>>Form<<<
Form -это родитель MianForm
Записан

v.korleone
Помогающий

ua
Offline Offline

« Ответ #59 : 13-11-2009 06:39 » 

Мои действия: становлюсь в описанном выше файле Form1.Designer.cs, на слове base, в строке base.Dispose(disposing), жму правую кнопку мыши и выбираю пункт из контекстного меню, "Go to definition". Открывается вкладка "Object [from metadata]", но ниже в строке состояния написано, что ее содержимое нельзя изменять - только читать, с чем я убедился на практике.
P.S. Пробую другой пример, взял здесь (http://m.habrahabr.ru/post/68613/) появляется ошибка, :
error CS1061: 'Block.Form1' does not contain a definition for 'Form1_Load' and no extension method 'Form1_Load' accepting a first argument of type 'Block.Form1' could be found (are you missing a using directive or an assembly reference?)
Симптомы кажется похожи на описанные выше.
 Не понял
« Последнее редактирование: 13-11-2009 10:38 от v.korleone » Записан
Страниц: 1 [2] 3  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines