Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Wizard / Property Sheets на VB реально сделать? / 16 сообщений из 16, страница 1 из 1
11.06.2014, 21:26
    #38668153
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Ну то что через API это понятно.

How to Create Wizards

About Property Sheets

При первичном чтении меня смущают фразы про Dialog Box Templates.
В VB6 обычно формы/диалоги в ресурсы не запихиваются.
Хотя подобный ресурс полагаю легко сварганить в VC++ 6.0 и засунуть в res файл.
В любом случае опыта здесь нет.

Направьте мысли.
М.б. примеры какие?
...
Рейтинг: 0 / 0
12.06.2014, 03:12
    #38668266
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Как ресурсы-диалоги из собственного exe-шника доставать?
В C++ редакторе сделал 3 диалога.
Обозвал 1001,1002,1003 -цифрами

Код: vbnet
1.
2.
3.
4.
5.
6.
Public Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" _
 (ByVal hInstance As Long, ByVal lpTemplateName As Long, _
 ByVal hWndParent As Long, ByVal lpDialogFunc As Long, _
 ByVal dwInitParam As Long) As Long

        DialogBoxParam App.hInstance, 1001, 0, 0, 0 'AddressOf DialogBoxProc, 0


не работает

Код: vbnet
1.
2.
3.
4.
5.
6.
Public Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" _
 (ByVal hInstance As Long, ByVal lpTemplateName As String, _
 ByVal hWndParent As Long, ByVal lpDialogFunc As Long, _
 ByVal dwInitParam As Long) As Long

        DialogBoxParam App.hInstance, "#1001", 0, 0, 0 'AddressOf DialogBoxProc, 0


не работает



А вот из чужой dll что интересно работает.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   'Load the shell32 library that contains the dialog resource that i want to load.
    hShell32 = LoadLibrary("shell32.dll")
    If hShell32 <> 0 Then
        'Create a modal dialog from a dialog resource located in shell32.dll
        DialogBoxParam hShell32, 1003, 0, 0, 0 'AddressOf DialogBoxProc, 0
        'After we exit from the dialog, free the shell32 library.
        FreeLibrary hShell32
    End If
    
End Sub



Как свои Dialog - ресурсы доставать?
Пример м.б.?
Без понимания этого вряд ли стоит дальше двигаться.
...
Рейтинг: 0 / 0
12.06.2014, 06:44
    #38668278
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
пропертишиты делать можно, в vb есть шаблон типа формы или контрола.
...
Рейтинг: 0 / 0
12.06.2014, 07:01
    #38668279
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Добавить диалог в ресурсы можно с помощью компилятора ресурсов:

Код: plaintext
1.
"C:\Program Files\Microsoft Visual Studio\VB98\Wizards\RC.EXE" /r /fo ThinAdmin.res UTC.rc

или с помощью любой .net-студии.

*.res - выходной файл, *.rc - текстовый файл со списком ресурсов:

Код: plaintext
1.
2.
3.
4.
5.
#define RT_HTML  23

// идентификатор  тип  файл
Add.gif 		RT_HTML 	"Add.gif"
add_s.gif 		RT_HTML 	"add_s.gif"

значение типа для диалога я не знаю.
...
Рейтинг: 0 / 0
15.06.2014, 03:54
    #38669536
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
AntonariyДобавить диалог в ресурсы можно с помощью
...
или с помощью любой .net-студии.
С rc-файлами я давно не вожусь.
.res-файл прекрасно правится через ResHacker.exe -но при этом его нелишне пересохранить через редактор ресурсов VC++ 6.0 (тот который родственник VB6).
Ну и диалоги именно через VC++ 6.0 прекрасно добавляется.

C DialogBoxParam/CreateDialogParam я лоханулся в следующем. C-шная студия по дефолту лепит
Код: plaintext
1.
2.
1001 DIALOG 0, 0, 317, 183
STYLE WS_CHILD


А надо как минимум WS_POPUP (чтоб его тупо вывести)
Код: plaintext
1.
2.
101 DIALOG 0, 0, 185, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION


И после такой правки все заработало.
2 варианта вывести диалог:
1.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Public Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" _
 (ByVal hInstance As Long, ByVal lpTemplateName As String, _
 ByVal hWndParent As Long, ByVal lpDialogFunc As Long, _
 ByVal dwInitParam As Long) As Long
Public Sub ShowDialog()
  DialogBoxParam App.hInstance, MAKEINTRESOURCE(101), Form1.hwnd, AddressOf DialogProc, 0
End Sub

2.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Declare Function CreateDialogParam Lib "user32.dll" Alias "CreateDialogParamA" ( _
 ByVal hInstance As Long, _
 ByVal lpTemplateName As String, _
 ByVal hWndParent As Long, _
 ByVal lpDialogFunc As Long, _
 ByVal dwInitParam As Long) As Long

Public Sub ShowDialog2()
  Dim hwndDlg As Long
  hwndDlg = CreateDialogParam(App.hInstance, MAKEINTRESOURCE(101), Form1.hwnd, AddressOf DialogProc, 0)
  ShowWindow hwndDlg, SW_SHOWNORMAL
End Sub



Ну, естественно CallBack - DialogProc -чтоб хоть проиллюстрировать как с диалогом дальше работать.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Function DialogProc(ByVal hwndDlg As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  Dim NotidyCode      As Long
  Dim ItemID          As Long
  
  Select Case uMsg
    Case WM_COMMAND
      NotidyCode = HIWORD(wParam) ' wParam \ 65536
      ItemID = LOWORD(wParam)  'wParam And 65535
      'Check if you click "Close Me" button
      If (ItemID = 1000) And NotidyCode = BN_CLICKED Then
        'Close the dialog box
        EndDialog hwndDlg, 0
        DialogProc = 1 'the dialog box procedure should return TRUE if it processed the message
      End If
    Case Else
  End Select
End Function



Я приложил маленький тест: диалог #101 с единственной кнопкой ItemID #1000 (чтоб закрыть его).

'=================
На самом деле мне эти тонкости со стилями не нужны.
Моя цель это стандартный Wizard: How to Create Wizards
Я тут покопал ресурсы например проги ntbackup.exe (мастер Bakup/Restore)
и думаю мне достаточно такого стиля
Код: plaintext
1.
2.
5026 DIALOG 0, 0, 317, 143
STYLE WS_CHILD | WS_DISABLED



Сыр бор с тест-проектом только лишь чтоб понять что я могу сослаться на диалог-ресурс своего exe из VB6 через мое
MAKEINTRESOURCE(5026) As String
либо
"#5026" As String
либо
5026 As Long

Походу все 3 варианта рабочие.

Теперь можно с чистой совестью двигаться дальше.
...
Рейтинг: 0 / 0
15.06.2014, 03:56
    #38669537
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
И сдается мне что Dialog - это легальная альтернатива CreateWindow.
...
Рейтинг: 0 / 0
17.06.2014, 01:12
    #38671097
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Ну вроде получилось все.
Наваял тест проект.
Выкладываю, пока не кастомизировал.
Типа мастер BackUp-Restore (пустышка, но принцип понятен).
На вистообразных использую стиль PSH_AEROWIZARD, хотя можно и классический.
CallBack-для каждой страницы - он аналогичен тому, который используется при кастомизации Common Dialogs - по крайней мере я так сделал. Потому что по документации вроде как положено PropSheetProc callback function , но я не использовал флаг PSH_USECALLBACK и подменил ее на обычную DialogProc callback function , до конца этого момента не понял, но вроде прокатило.

Как-то так
Код: vbnet
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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
'Property Sheet Structures

'dwFlags - Flags that indicate which options to use when creating the property sheet page.
Public Const PSH_USEICONID = &H4 'Uses pszIcon as the name of the icon resource to load and use as the small icon in the title bar
Public Const PSH_WIZARDHASFINISH = &H10 'Always displays the Finish button on the wizard.
Public Const PSH_WIZARD = &H20 'use with PSH_AEROWIZARD
Public Const PSH_AEROWIZARD = &H4000 'Aero style
Public Const PSH_WATERMARK = &H8000& 'Specifies that a watermark bitmap will be used with a Wizard97 wizard on pages that have the PSP_HIDEHEADER style.
Public Const PSH_STRETCHWATERMARK = &H40000 'old
Public Const PSH_HEADER = &H80000  'Indicates that a header bitmap will be used with a Wizard97 wizard.
Public Const PSH_WIZARD97 = &H1000000 '(don't use &H2000)Creates a Wizard97-style property sheet, which supports bitmaps in the header of interior pages and on the left side of exterior pages.

Public Type PROPSHEETHEADER
  dwSize As Long
  dwFlags As Long
  hWndParent As Long
  hInstance As Long
  Union_hIcon_pszIcon As Long
  pszCaption As Long 'Ptr
  nPages As Long
  Union_nStartPage_pStartPage As Long
  Union_ppsp_phpage As Long
  pfnCallback As Long
  Union_hbmWatermark_pszbmWatermark As Long 'Ptr
  hplWatermark As Long
  Union_hbmHeader_pszbmHeader As Long 'Ptr
End Type

' dwFlags - Flags that indicate which options to use when creating the property sheet page
Public Const PSP_USETITLE = &H8
Public Const PSP_HIDEHEADER = &H800
Public Const PSP_USEHEADERTITLE = &H1000
Public Const PSP_USEHEADERSUBTITLE = &H2000

Public Type PROPSHEETPAGE
  dwSize As Long
  dwFlags As Long
  hInstance As Long
  Union_pszTemplate_pResource As Long 'Ptr
  Union_hIcon_pszIcon As Long
  pszTitle As Long
  pfnDlgProc As Long
  lParam As Long
  pfnCallback As Long
  pcRefParent As Long
  pszHeaderTitle As Long 'Ptr
  pszHeaderSubTitle As Long 'Ptr
  hActCtx As Long
End Type

'Property Sheet Functions
Public Declare Function CreatePropertySheetPage Lib "comctl32.dll" _
 Alias "CreatePropertySheetPageA" (ByRef lppsp As PROPSHEETPAGE) As Long
Public Declare Function PropertySheet Lib "comctl32.dll" _
 Alias "PropertySheetA" (ByRef lppsph As PROPSHEETHEADER) As Long
 
'Property Sheet Notifications
Public Const PSN_FIRST = (0 - 200)
Public Const PSN_SETACTIVE = (PSN_FIRST - 0)
Public Const PSN_WIZBACK = (PSN_FIRST - 6)
Public Const PSN_WIZNEXT = (PSN_FIRST - 7)
Public Const PSN_WIZFINISH = (PSN_FIRST - 8)

'Property Sheet Messages

'lParam - Value that specifies which property sheet buttons are enabled.
Public Const PSWIZB_BACK = &H1
Public Const PSWIZB_NEXT = &H2
Public Const PSWIZB_FINISH = &H4
Public Const PSWIZB_DISABLEDFINISH = &H8

Public Const PSM_SETWIZBUTTONS = (WM_USER + 112)

'SetWindowLong - Sets the new address of the dialog box procedure
Public Const DWL_MSGRESULT = 0

Public ahpsp(0 To 7) As Long

Public Sub CreateMyWizard()

  Dim psp As PROPSHEETPAGE

  With psp
    .dwSize = LenB(psp)
    .hInstance = App.hInstance
    If sys_WinVista Then
      .dwFlags = PSP_USEHEADERTITLE
      .pszHeaderTitle = 12
      .Union_pszTemplate_pResource = 201
    Else
      .dwFlags = PSP_HIDEHEADER Or PSP_USETITLE
      .pszTitle = 1
      .Union_pszTemplate_pResource = 101
    End If
    .pfnDlgProc = FARPROC(AddressOf IntPage0DlgProc)
  End With
  ahpsp(0) = CreatePropertySheetPage(psp)
...  
  Dim psh As PROPSHEETHEADER
  With psh
    .dwSize = LenB(psh)
    .hInstance = App.hInstance
    .hWndParent = 0
    .Union_ppsp_phpage = VarPtr(ahpsp(0))
    If sys_WinVista Then
      .dwFlags = PSH_WIZARD Or PSH_AEROWIZARD Or PSH_USEICONID
      .pszCaption = 1 'vista
      .Union_hIcon_pszIcon = 201 'vista
    Else
      .dwFlags = PSH_WIZARD97 Or PSH_HEADER Or PSH_WATERMARK
      .Union_hbmWatermark_pszbmWatermark = 201
      .Union_hbmHeader_pszbmHeader = 202
    End If
    .Union_nStartPage_pStartPage = 0
    .nPages = 8
  End With
  
  PropertySheet psh
End Sub
...
Рейтинг: 0 / 0
17.06.2014, 01:15
    #38671099
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Exe-шник с 32-битными битмапами (подменяются ResHacker-ом после компиляции).
...
Рейтинг: 0 / 0
17.06.2014, 01:16
    #38671101
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Ну и скрин до кучи.
...
Рейтинг: 0 / 0
18.06.2014, 07:28
    #38672510
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
А как крестик убрать (который закрывает визард)?
Чтоб его вообще не было.
Пример: мастер добавления нового девайса.
Просто когда Wizard чего-то делает этот крестик точно лишний (от кривых ручонок).
И это не то же самое что Cancel, с Cancel я разобрался (Disable/Enable).

Возможный вариант:

Код: vbnet
1.
2.
3.
4.
5.
    Case WM_INITDIALOG
      'делаем крестик (Close) disabled
      Dim hMenu As Long
      hMenu = GetSystemMenu(GetParent(hwndDlg), False)
      DeleteMenu hMenu, SC_CLOSE, MF_BYCOMMAND



Но крестик просто disabled в этом случае.
И это не работает на аэро-визарде.
Должен быть какой-то "легальный" путь, пока не нашел.
...
Рейтинг: 0 / 0
18.06.2014, 07:31
    #38672511
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
На языке VB-формы я хочу ControlBox=False.
...
Рейтинг: 0 / 0
18.06.2014, 09:54
    #38672582
_Дмит_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Так это в стиле можно задать. К примеру:
STYLE WS_DLGFRAME | WS_CAPTION
окно будет без кнопок
...
Рейтинг: 0 / 0
18.06.2014, 14:16
    #38672990
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
_Дмит_Так это в стиле можно задать. К примеру:
STYLE WS_DLGFRAME | WS_CAPTION
окно будет без кнопок

Судя по тому как ты это записал, ты имеешь ввиду стиль диалога в ресурсах.
Если речь идет об отдельном диалоге, который выводишь через
DialogBoxParam/CreateDialogParam
то я с тобой соглашусь.
И это подтверждается моим же примером (парой постов выше):
16164928
Он там выводится с Caption и без кнопок.

Но если блин у меня визард - т.е. набор диалогов,
объединяемый структурами PROPSHEETPAGE/PROPSHEETHEADER
то плевать он хотел на то, какие стили в самих диалогах засунуты.

Хочешь, поиграйся, в этом посте проект вложен:
16172901

Здесь варианта куда рыть всего 2 мне кажется:
1) Либо какая-нибудь "легальная" хитрость кот. я не доглядел/не дочитал
2) Либо применять что либо к окну GetParent(hwndDlg),
где hwndDlg -хэндл первого выводимого диалога, доступный через его Proc-ф-цию.
Причем самое удобное место это
Код: vbnet
1.
2.
    Case WM_INITDIALOG
       ...GetParent(hwndDlg)...

И один из таких вариантов (не очень правильный) я привел. GetParent(hwndDlg) -это его оболочка, то бишь сам Wizard.
Но во втором пути есть куча проблем, ибо уже созданные окна очень плохо и не всегда реагируют на изменения стилей.

Я думаю должно бы быть что-то по первому направлению, не думаю что Microsoft извращается, убрав крестик в половине своих визардов.

А с другой стороны, в ряде других визардов от Microsoft крестик присутствует и их очень даже можно схлопнуть без всяких вопросов и в самый неподходящий момент (например, когда распаковывает файлы из архива).

Как вариант можно конечно и забить на это и оставить крестик.
...
Рейтинг: 0 / 0
18.06.2014, 14:35
    #38673028
_Дмит_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
К сожалению у меня только VBA в наличии, поиграться не получиться :)
Может постучусь обратно в открытую дверь, в VBA можно удалить кнопки изменив стиль окна.
Не подойдёт ли это Вам?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Declare Function SetWindowLong Lib "user32.dll" Alias _
		"SetWindowLongA" ( ByVal hwnd As Long, _
		ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
				( ByVal lpClassName As String, _
				ByVal lpWindowName As String) As Long

Private Declare Function DrawMenuBar Lib "user32" _
				(ByVal hwnd As Long) As Long

Private Const GWL_STYLE As Long = -16
Private hForm As Long
Private lStyle As Long

Private Sub UserForm_Activate()
    hForm = FindWindow("ThunderDFrame", Me.Caption)
    lStyle = -1832700000
    Call SetWindowLong(hForm, GWL_STYLE, lStyle)
    DrawMenuBar hForm
End Sub
...
Рейтинг: 0 / 0
18.06.2014, 14:39
    #38673032
_Дмит_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
авторибо уже созданные окна очень плохо и не всегда реагируют на изменения стилей.- DrawMenuBar не помогает?
...
Рейтинг: 0 / 0
19.06.2014, 00:56
    #38673722
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Wizard / Property Sheets на VB реально сделать?
Чтобы убрать крестик, надо снять стиль WS_SYSMENU с родительского диалога Wizard-а (не те, которые в ресурсах, т.е не страницы визарда, а генерируемая оболочка).
Делается это через документированную процедуру PropSheetProc callback function
Здесь два способа:
1) Ковырять PSCB_PRECREATE и структуры DLGTEMPLATE structure и DLGTEMPLATEEX structure (причем последняя видимо никогда не при делах -для визарда, но тем не менее).
Этот метод не работает для PSH_AEROWIZARD.

2) Но к счастью можно воспользоваться PSCB_INITIALIZED и просто убрать WS_SYSMENU через SetWindowLong/GetWindowLong/GWL_STYLE
И это работает как для PSH_WIZARD97 так и для PSH_AEROWIZARD

Код: vbnet
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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
Public Const PSH_USECALLBACK = &H100 'Calls the function specified by the pfnCallback member

'Dialog Box Structures

Public Type DLGTEMPLATE
  style As Long
  dwExtendedStyle As Long
  cdit As Integer
  x As Integer
  y As Integer
  cx As Integer
  cy As Integer
End Type

Public Type DLGTEMPLATEEX
  dlgVer As Integer
  signature As Integer ' If signature is 0xFFFF, this is an extended dialog box template
  helpID As Long
  exStyle As Long
  style As Long
  cDlgItems As Integer
  x As Integer
  y As Integer
  cx As Integer
  cy As Integer
  '...ХЗ
End Type

'PropSheetProc callback function
'uMsg -Message being received.
Public Const PSCB_INITIALIZED = 1
Public Const PSCB_PRECREATE = 2 'not applicable if Aero wizard

...
  Dim psh As PROPSHEETHEADER
  With psh
...
    If sys_WinVista Then
      .dwFlags = PSH_WIZARD Or PSH_AEROWIZARD Or PSH_USEICONID Or PSH_USECALLBACK
...
    Else
      .dwFlags = PSH_WIZARD97 Or PSH_HEADER Or PSH_WATERMARK Or PSH_USECALLBACK
...
    End If
    .pfnCallback = FARPROC(AddressOf PropSheetProc)
...
  End With
  PropertySheet psh
End Sub


Private Function PropSheetProc(ByVal hwndDlg As Long, ByVal uMsg As Long, _
 ByVal lParam As Long) As Long
  Dim IntSignature As Integer 'pDlgTemplateEx->signature
  Dim pDlgTemplate As DLGTEMPLATE
  Dim dwStyle As Long
  
  Debug.Print uMsg
  Select Case uMsg
    Case PSCB_PRECREATE
      'способ #1:это не работает на PSH_AEROWIZARD!!!
      'Debug.Print "PSCB_PRECREATE"
      Call CopyMemory(IntSignature, ByVal (lParam + 2), 2)
      Debug.Print IntSignature
      If IntSignature <> &HFFFF Then 'if (pDlgTemplateEx->signature != 0xFFFF)
        Call CopyMemory(pDlgTemplate, ByVal lParam, Len(pDlgTemplate))
        pDlgTemplate.style = pDlgTemplate.style And Not WS_SYSMENU
        Call CopyMemory(ByVal lParam, pDlgTemplate, Len(pDlgTemplate))
        'Call CopyMemory(dwStyle, ByVal lParam, 4) 'pDlgTemplate->style
        'dwStyle = dwStyle And Not WS_SYSMENU
        'Call CopyMemory(ByVal lParam, dwStyle, 4)
      Else 'хотя это вряд ли понадобится
        Call CopyMemory(dwStyle, ByVal (lParam + 12), 4) 'pDlgTemplateEx->style
        dwStyle = dwStyle And Not WS_SYSMENU
        Call CopyMemory(ByVal (lParam + 12), dwStyle, 4)
      End If
    Case PSCB_INITIALIZED
      'способ #2:а вот это работает и на PSH_AEROWIZARD, и на PSH_WIZARD97
      'Debug.Print "PSCB_INITIALIZED"
      If sys_WinVista Then 'ну не дважды же его устанавливать (для PSH_WIZARD97)
        Call SetWindowLong(hwndDlg, GWL_STYLE, GetWindowLong(hwndDlg, GWL_STYLE) And Not WS_SYSMENU)
      End If
    Case Else
  End Select
End Function
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Wizard / Property Sheets на VB реально сделать? / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]