void FillListBox (HWND hwndList)
这个函数错哪里了?
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
#define ID_LIST 1
#define ID_TEXT 2
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Environ") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, TEXT ("环境变量列表"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}void FillListBox (HWND hwndList)
{
int iLength;
TCHAR *pVarBlock, *pVarBeg, *pVarEnd, *pVarName;
pVarBlock = GetEnvironmentStrings();
while(*pVarBlock != '\0')
{
if( *pVarBlock!= '=')
{
pVarBeg = pVarBlock ;
while(*pVarBlock++ != '=');
pVarEnd = pVarBlock - 1;
iLength = pVarEnd - pVarBeg;
pVarName = (PTCHAR)calloc(iLength+1,sizeof(TCHAR));
CopyMemory(pVarName,pVarBeg,iLength*sizeof(TCHAR));
pVarName[iLength] = '\0';
SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) pVarName);
free(pVarName);
}
while(*pVarBlock++!='\0');
}
FreeEnvironmentStrings(pVarBlock);
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hwndList, hwndText ;
int iIndex, iLength, cxChar, cyChar ;
TCHAR * pVarName, * pVarValue ;
TCHAR *pVarBlock;
switch (message)
{
case WM_CREATE :
cxChar = LOWORD (GetDialogBaseUnits ());
cyChar = HIWORD (GetDialogBaseUnits ()); hwndList = CreateWindow(TEXT("listbox"),NULL,
WS_CHILD|WS_VISIBLE|LBS_STANDARD,
cxChar,cyChar*3,cxChar*16+GetSystemMetrics(SM_CXVSCROLL),
cyChar*5,
hwnd,(HMENU)ID_LIST,
(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),NULL);
FillListBox(hwndList);
return 0;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
这个函数错哪里了?
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
#define ID_LIST 1
#define ID_TEXT 2
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Environ") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, TEXT ("环境变量列表"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}void FillListBox (HWND hwndList)
{
int iLength;
TCHAR *pVarBlock, *pVarBeg, *pVarEnd, *pVarName;
pVarBlock = GetEnvironmentStrings();
while(*pVarBlock != '\0')
{
if( *pVarBlock!= '=')
{
pVarBeg = pVarBlock ;
while(*pVarBlock++ != '=');
pVarEnd = pVarBlock - 1;
iLength = pVarEnd - pVarBeg;
pVarName = (PTCHAR)calloc(iLength+1,sizeof(TCHAR));
CopyMemory(pVarName,pVarBeg,iLength*sizeof(TCHAR));
pVarName[iLength] = '\0';
SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) pVarName);
free(pVarName);
}
while(*pVarBlock++!='\0');
}
FreeEnvironmentStrings(pVarBlock);
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hwndList, hwndText ;
int iIndex, iLength, cxChar, cyChar ;
TCHAR * pVarName, * pVarValue ;
TCHAR *pVarBlock;
switch (message)
{
case WM_CREATE :
cxChar = LOWORD (GetDialogBaseUnits ());
cyChar = HIWORD (GetDialogBaseUnits ()); hwndList = CreateWindow(TEXT("listbox"),NULL,
WS_CHILD|WS_VISIBLE|LBS_STANDARD,
cxChar,cyChar*3,cxChar*16+GetSystemMetrics(SM_CXVSCROLL),
cyChar*5,
hwnd,(HMENU)ID_LIST,
(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),NULL);
FillListBox(hwndList);
return 0;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
解决方案 »
- 如何在VS2010创建Chrome的工程文件??
- 求助mfc的图表的实现问题?
- wtl项目CWTLClock2View::OnTimer : function does not take 1 arguments 出错
- 进度条无法获得设置范围和当前位置
- VC+SQL写的程序昨天运行好好的 今天怎么就Runtime Error了
- 怎么动态改变Static的文字
- 为什么只显示一个字符
- 关于自建控件的SubClassDlgItem的问题
- socket如何 群发消息
- 如何使用list控件
- include <winioctl.h>的问题:VS2008编译通过,VC++6.0则不行
- 灵异事件,visual studio 2005.net 运行不到断点处了
主要是这部分有问题void FillListBox (HWND hwndList)
{
int iLength;
TCHAR *pVarBlock, *pVarBeg, *pVarEnd, *pVarName;
pVarBlock = GetEnvironmentStrings();
while(*pVarBlock != '\0')
{ if( *pVarBlock!= '=')
{pVarBeg = pVarBlock ;
while(*pVarBlock++ != '=');
pVarEnd = pVarBlock - 1;
iLength = pVarEnd - pVarBeg;
pVarName = (PTCHAR)calloc(iLength+1,sizeof(TCHAR));
CopyMemory(pVarName,pVarBeg,iLength*sizeof(TCHAR));
pVarName[iLength] = '\0';
SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) pVarName);
free(pVarName);
}
while(*pVarBlock++!='\0');
}
FreeEnvironmentStrings(pVarBlock);
}