Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 25.11.2004, 19:12   [включить плавающее окно]   #1
Ant.ttk
Мужской Продвинутый
Автор темы
 
Аватар для Ant.ttk
 
Регистрация: 16.11.2004
Адрес: Троицк
Проблема с Диалогами и элементами упр. С++

Блин у меня новая трабла. Почему когда я в форму вставляю некоторые элементы управления(например, IP Address, List box) диалог перестает грузиться? Когда удаляю этот элемент управления все ок. Эти элементы являються IE commands из commctrl.h и comctl32.lib. Вроде подключаю и заголовки и библиотеку.


code:
--------------------------------------------------------------------------------

#include "main.h"

HINSTANCE hInst;

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
hInst=hInstance;

char cWndClass[]="WndClass";
WNDCLASS m_wndclass;
memset(&m_wndclass,0,sizeof(WNDCLASS));
m_wndclass.style = CS_HREDRAW | CS_VREDRAW;
m_wndclass.lpfnWndProc = WndProc;
m_wndclass.hInstance = hInstance;
m_wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
m_wndclass.lpszMenuName = (LPCSTR)IDR_MAINMENU;
m_wndclass.hbrBackground = GetStockBrush(1);
m_wndclass.lpszClassName = "WndClass";

RegisterClass(&m_wndclass);

HWND hWnd = CreateWindow("WndClass", "Razdmat @by Ant", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
switch(wmId)
{
case ID_myFILE_NEW:
{
DialogBox(hInst, (LPCTSTR)IDD_FILE_NEW, hWnd, (DLGPROC)iddNew);
break;
}
case ID_FILE_EXIT:
{
DestroyWindow(hWnd);
break;
}
}
break;
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}

return DefWindowProc(hWnd, message, wParam, lParam);
}

LRESULT CALLBACK iddNew(HWND hNew, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
int index = SendDlgItemMessage(hNew, IDC_NEW_LIST, LB_ADDSTRING, 0, (LPARAM)"Hi there!");
return TRUE;
}
case WM_COMMAND:
{
if (LOWORD(wParam) == IDB_NEW_OK || LOWORD(wParam) == IDB_NEW_CANCEL)
{
EndDialog(hNew, LOWORD(wParam));
return FALSE;
}
break;
}
default:
return FALSE;
}
return FALSE;
}

--------------------------------------------------------------------------------



Main.h

code:
--------------------------------------------------------------------------------

#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <windowsx.h>
#include <winuser.h>
#include "resource.h"
#pragma comment(lib,"comctl32.lib")
#include <commctrl.h>

#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK iddNew(HWND, UINT, WPARAM, LPARAM);

--------------------------------------------------------------------------------
int a=DialogBox(hInst, MAKEINTRESOURCE(IDD_FILE_NEW), hWnd, (DLGPROC)iddNew);
char b[25];
itoa(a,b,10);
MessageBox(hWnd,b,"a",0);

Здесь b=-1




Прочитал ветку про WinApi. Ну вот вам винапи )). Недавно изучаю С++ и решил писать на ВинАпи и не на МФЦ(не втыкаю я в это MFC апи понятней)
__________________
Feel the force, motherf*ckers.

Последний раз редактировалось Ant.ttk; 25.11.2004 в 22:59.
Ant.ttk вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 26.11.2004, 03:42   [включить плавающее окно]   #2
passer-by
Общительный
 
Регистрация: 16.12.2003
Ant.ttk
В твоем коде нет вызова InitCommonControls(), сделай его (вызов) вначале работы, например, первой командой.
passer-by вне форума  
Ответить с цитированием
Непрочитано 26.11.2004, 09:59   [включить плавающее окно]   #3
Ant.ttk
Мужской Продвинутый
Автор темы
 
Аватар для Ant.ttk
 
Регистрация: 16.11.2004
Адрес: Троицк
Да, точно. Спасибо.
__________________
Feel the force, motherf*ckers.
Ant.ttk вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 28.11.2004, 19:13   [включить плавающее окно]   #4
Ant.ttk
Мужской Продвинутый
Автор темы
 
Аватар для Ant.ttk
 
Регистрация: 16.11.2004
Адрес: Троицк
LRESULT CALLBACK iddTest1(HWND hTest1, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
{
HWND hTest1_List=GetDlgItem(hTest1,IDC_TEST1_LIST);

TEST1_LIST_ADDCOLUMN(hTest1_List,0,25,"");
TEST1_LIST_ADDCOLUMN(hTest1_List,1,70,"Task");
TEST1_LIST_ADDCOLUMN(hTest1_List,2,70,"Answer");
TEST1_LIST_ADDCOLUMN(hTest1_List,3,118,"Time");
LIST_ADDFURTHERITEM(hTest1_List,0,0,"Fuck");

return TRUE;
}
default:
return FALSE;
}
return FALSE;
}

BOOL TEST1_LIST_ADDCOLUMN(HWND hList,int subi,int size,char* Column)
{
LV_COLUMN lvc;
lvc.mask=LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc.fmt= LVCFMT_LEFT;
lvc.iSubItem=0;
lvc.pszText=Column;
lvc.cx=size;
ListView_InsertColumn(hList,subi,&lvc);
return TRUE;
}

BOOL LIST_ADDFURTHERITEM(HWND hNew,int i,int subi,char* Caption)
{
HWND hNEW_LIST=GetDlgItem(hNew,IDC_NEW_LIST);
LV_ITEM lvi1;
lvi1.mask=LVIF_TEXT|LVCF_SUBITEM;
lvi1.state=0;
lvi1.iItem=i;
lvi1.iSubItem=subi;
lvi1.pszText=Caption;
ListView_SetItem(hNEW_LIST,&lvi1);

return TRUE;
}

Колонки рисуются. Почему не добовляються в List View Item'ы?
__________________
Feel the force, motherf*ckers.
Ant.ttk вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 29.11.2004, 04:10   [включить плавающее окно]   #5
passer-by
Общительный
 
Регистрация: 16.12.2003
Ant.ttk
Потому что сначала надо LVM_INSERTITEM, например, для первой колонки, а потом LVM_SETITEM для оставшихся колонок.
passer-by вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:34. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey