Форум программистов, компьютерный форум CyberForum.ru

Переименовать окно приложения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно доработать программу, что бы считала кол-во спичек. Текст задания ниже http://www.cyberforum.ru/cpp/thread1204197.html
Разработать программную модель следующей игры двух игроков(пользователь-компьютер),реализовав выигрышную стратегию для компьютера:На стол выкладываются 50 спичек.Каждый игрок по очереди вынимает спички из кучи,по меньшей мере,1 и не более 6.Кто берет последнюю спичку,тот выигрывает. #include<iostream.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> void main() { int a,b,k,p,m;...
C++ Логическое высказывание если дано логическое выражение, в котором все сокращается, какой будет ответ? Выполнимо, общезначимо, невыполнимо... http://www.cyberforum.ru/cpp/thread1203587.html
C++ Разбить подсчет арифметической прогрессии на несколько потоков
#include <windows.h> #include <iostream> using namespace std; CRITICAL_SECTION cs; int e; int sh; int col; int mas;
На печать выдать слова, имеющие больше одной буквы «е» C++
Дана строка. На печать выдать слова, имеющие больше одной буквы «е». С++ Помогите пожалуйста. Добавлено через 3 минуты help! Добавлено через 6 минут help
C++ Написать функцию удаления элемента http://www.cyberforum.ru/cpp/thread1202663.html
Не работает функция удаления элемента Помогите написать ее #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream> #include <string.h> #include <stdlib.h>
C++ переделать программу ,пожалуйста #include <iostream>//cout,cin #include <chrono>//сверхточные часы #include <random>//rand() //функция для вывода массива void show(int *arr, int N) { for (int i = 0; i < N; i++) { std::cout <<arr <<'\t';//вывод элемента подробнее

Показать сообщение отдельно
Leardjiny
0 / 0 / 1
Регистрация: 22.09.2013
Сообщений: 135

Переименовать окно приложения - C++

10.06.2014, 13:39. Просмотров 488. Ответов 0
Метки (Все метки)

Добрый день.
Хочу сделать, чтобы в том случае, если приложение было открыто несколько раз, то их названия писались по разному:
1е окно - "App", 2 окно - "App[2]", 3 окно "App[3]" и т.д.

Пытаюсь делать следующим образом:

C++
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
HWND window_op;
window_op = FindWindow(NULL, L"App");
 
if (window_op)
{
    int num = 1;
    while()
    {
        CString app_num;
        app_num.Format(L"App[%d]", num);    
        window_op = FindWindow(NULL, app_num);
        if(window_op)
        {
            num++;
        }
        else
        {
            app_num.Format(L"App[%d]", num);    
            HWND hwnd = NULL;
            hwnd = GetForegroundWindow();
            SetWindowText(hwnd,app_num);
            break;
        }
    }
}
Но это не работает. Подскажите пожалуйста что не так.
Сейчас пишет, что функция FindWindow возвращает не HWND а CWnd*.
И пишет, что функция SetWindowText имеет только один аргумент типа LPCSTR.

Добавлено через 8 минут
Все, разобрался... все дело было в том, что у меня основное приложение создавало диалоговое окно (как раз CWnd*), в котором и находится функционал.
И получалась ситуация, что из стартового класса все работало, но название изменить не выходило, т.к. диалога либо еще не существовало, либо уже был закрыт.
А из самого диалога функции работали по другому.

Сделал так:

C++
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
//Начальное окно:
    int num = 0;
    HWND window_op;
    window_op = FindWindow(NULL, L"App");
    if (window_op)
    {
        num=2;
        while(1)
        {
            CString app_num;
            app_num.Format(L"App[%d]", num);    
            window_op = FindWindow(NULL, app_num);
            if(window_op)
            {
                num++;
            }
            else
            {
                
                break;
            }
        }
    }
    
    CBinServerDlg dlg;
    dlg.m_number_oppened = num;
    m_pMainWnd = &dlg;
 
    INT_PTR nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
    }
    else if (nResponse == IDCANCEL)
    {
    }
 
 
//В функции Init самого диалога
    CString app_num;
    if (m_number_oppened != 0)
    {
        app_num.Format(L"App[%d]", m_number_oppened);    
        SetWindowText(app_num);
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru