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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
krolig
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 14
#1

Почему MessageBox пустой? (char *s <-> LPTSTR из "API - функции") - C++

15.11.2013, 18:45. Просмотров 257. Ответов 0
Метки нет (Все метки)

Пишу под WinCC 7.0, C-Script.
На профильных форумах (WinCC), видимо, не сильны именно в С++ да и функция редкоиспользуемая попалась.

Использую библиотечную функцию из ODK:



Declaration
BOOL PWRTPermissionToString (
LONG perm,
LPTSTR string,
int bufsize )

Description
Determines the description text for an authorization level.

Parameters

perm
Authorization level whose description you want to obtain.

string
Pointer to the buffer to store the description

bufsize
Size of the buffer

Return value
TRUE
Description transmitted successfully.

FALSE
Description not found.

Required files
pwrt_api.h
pass_s.lib
useadmin.dll

Sample
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
//{{ODK_EXAMPLE}Gets a string associated with the permission number. (USE)}
//{{FUNCTION}PWRTPermissionToString (USE)}
//{{FUNCTION}(END)}
void CPWRTBunch::Pwrtpermissiontostring()
{
    BOOL bRet;
    CString csOut;
    CString csPermLevName;
    CGetText l_PermissionLevel("Insert the permission level number:");
    if(l_PermissionLevel.DoModal()==IDOK)
    {
        /////////////////////////////////////////////////////////////////////////////////////////
        bRet=PWRTPermissionToString(l_PermissionLevel.m_lNumber, csPermLevName.GetBuffer(1024), 1024);
        /////////////////////////////////////////////////////////////////////////////////////////
        if(!bRet)
        {
            m_pView->Print("ERROR: ", FSIZE_FUNCMARK);
            m_pView->Print("PWRTPermissionToString.\n", FSIZE_PARAMMARK, FALSE, TRUE);
            m_pView->Print("\n");
            return;
        }
        csOut.Format("PWRTPermissionToString( %ld, buffer )\n", l_PermissionLevel.m_lNumber);
        m_pView->Print(csOut, FSIZE_FUNCMARK, TRUE);
        m_pView->Print("Permission level name:\n", FSIZE_PARAMMARK, FALSE, TRUE);
        csOut.Format("buffer = \"%s\"\n", csPermLevName);
        m_pView->Print(csOut, FSIZE_SUBMARK);
        m_pView->Print("\n");
    }
}
//{{ODK_EXAMPLE}(END)}


В WinCC C-Stript отсутсвует CString. Поэтому я вынужден обходиться char[n] или char*.
Хотел подключить библиотеку для CString - никак не найду скачать необходимые файлы.
Написал на char* компилируется, но "Почему MessageBox выводится пустой?"!
Экспериментально я установил, что проблема в том, что PWRTPermissionToString не заполняет мою строку s.
Т. к. если вместо функции PWRTPermissionToString, выполнить просто s="sdfsf";, то "sdfsf" выводится нормально.
Даже пробовал буфера по [64] байта брать - не помогает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "apdefap.h" 
 void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) 
 { 
    #pragma code ("UseAdmin.DLL") 
    #include "pwrt_api.h" 
    #pragma code () 
 
    char* s; 
 
    s=malloc(1024); 
    memset(s,0,1024); 
 
    if (PWRTPermissionToString(2, s, 1024)) 
    { 
       MessageBox(   GetForegroundWindow(), 
                           s, 
                           "LMS Confirmation", 
                           MB_OKCANCEL|MB_SETFOREGROUND); 
    } 
 
    free(s); 
 }
Варианты: 1) Или где скачать и какие файлы для подключения CString к WinCC C-Script.
2) Почему пустая строка, что не так, чего ещё попробовать, чтобы текст было видно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2013, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему MessageBox пустой? (char *s <-> LPTSTR из "API - функции") (C++):

Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *" - C++
string s = &quot;555 44 55 66&quot;;//размер строки заранее неизвестен char* p = strtok(s.c_str(), ' '); не нравится такое...

error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" - C++
for(int i = 0; i&lt; 5; i++) { wr_struc (list); if (strcmp(&amp;list.Sostav,osn_sostav)==0 &amp;&amp; strcmp(&amp;list.MestoVkomande,attack)==0...

Не открывается библиотека 'stdafx.h' и "char" не работает с параметром "char*" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cstring&gt; using namespace std; int one(char fam) //...

IntelliSense: несовместимые типы операндов ("char" и "const char *") - C++
привет всем! при таком коде: void main() { ifstream fin; ofstream fout; fin.open(&quot;input.txt&quot;); ...

Несовместимые типы операндов "char" и "const char*" - C++
В чем проблема?

Невозможно преобразовать параметр 2 из "char" в "const char *" - C++
Ошибка strcpy: невозможно преобразовать параметр 2 из &quot;char&quot; в &quot;const char *&quot; //удаления из первой строки всех символов, встречающихся...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 18:45
Привет! Вот еще темы с ответами:

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include &lt;iostream&gt; template&lt;typename T&gt; inline const T...

Ошибка "error C2446: :: нет преобразования "int" в "char *" - C++
Ошибка: &quot;error C2446: :: нет преобразования &quot;int&quot; в &quot;char *&quot; Когда нажимаю двойным кликом на ошибку меня перекидывает в файл...

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" - C++
int f(unsigned char s, unsigned char q) { N = strlen(s); //Ошибка тут... M = strlen(q); //...и тут Как исправить?

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru