首页
社区
课程
招聘
[求助]我用VC写了一个对话框程序,可是用鼠标点击窗体的控件时,窗体就会被关闭,不知道什么原因,对话框的函数如下:
发表于: 2008-2-3 10:41 7735

[求助]我用VC写了一个对话框程序,可是用鼠标点击窗体的控件时,窗体就会被关闭,不知道什么原因,对话框的函数如下:

2008-2-3 10:41
7735
LRESULT CALLBACK  mainDlgProc(HWND  hDlg, UINT uMsg,WPARAM wParam, LPARAM lParam)   
{   
     switch(uMsg)
     {   
         case  WM_INITDIALOG:
                   InitCommonControls();   //通用控件初始化
                   SetWindowText(hDlg,"日志读取程序");
                   hlist=GetDlgItem(hDlg,IDC_LIST1);
           return   TRUE;   
         case   WM_COMMAND:   
           switch(wParam)
           {   
             case  IDOK:   
                listevent();   
                return  TRUE;   
            }
                 case WM_CLOSE:
           EndDialog(hDlg,TRUE);   
                   break;
       }   
    return  0;   
}

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
LRESULT CALLBACK  mainDlgProc(HWND  hDlg, UINT uMsg,WPARAM wParam, LPARAM lParam)   
{   
     switch(uMsg)
     {   
         case  WM_INITDIALOG:
       InitCommonControls();   //通用控件初始化
       SetWindowText(hDlg,"日志读取程序");
       hlist=GetDlgItem(hDlg,IDC_LIST1);
           return   TRUE;   
         case   WM_COMMAND:   
           switch(wParam)
           {   
             case  IDOK:   
                listevent();   
                return  TRUE;   
            }
           break;
     case WM_CLOSE:
           EndDialog(hDlg,TRUE);   
       break;
       }   
    return  0;   
}
2008-2-3 11:34
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢:

这个问题解决了,可是新的问题出现了,当我点完OK按钮后,程序直接退出了,我OK按钮的代码
基本上都是仿MSDN做的

#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
#include <tlhelp32.h>
#include "resource.h"

#pragma  comment(linker,"/subsystem:\"windows\" /entry:\"WinMainCRTStartup\"")
#pragma  comment(linker,"/out:mytest.exe")
#pragma  comment(lib,"User32.lib")
#pragma  comment(lib,"advapi32.lib")
#pragma  comment(lib,"comctl32.lib")

LPCTSTR dllName="C:\\WINDOWS\\SYSTEM32\\msi.dll";

HINSTANCE hInstance;
HWND hlist;
void listevent()
{
        HANDLE hdle;
        EVENTLOGRECORD *ptr;
        BYTE buff[1024*64];
        DWORD read_len, next_len;
        ptr=(EVENTLOGRECORD *)&buff;
        hdle=OpenEventLog(NULL, "System");
        if (hdle==NULL)
        {
                MessageBox(0,"打开日志失败",NULL,0);
        }
        else
        {
                long mRet;
                LPCTSTR lpSourceName;
                char lpszSourceName[255]={0};
                char lpszComputerName[255]={0};
                unsigned uStepOfString;
                char* pStrings;
                char szExpandedString[1024]={0};
                int x;
                DWORD dwThisRecord;
                char buffer[65];
                HANDLE ghResDll;
                char lpMsgBuf1[4096];
                ghResDll =  LoadLibrary(dllName);
                GetOldestEventLogRecord(hdle, &dwThisRecord);
                while(ReadEventLog(hdle,EVENTLOG_FORWARDS_READ|EVENTLOG_SEQUENTIAL_READ,
                        0,ptr,sizeof(buff),&read_len,&next_len))
                {
                        while(read_len>0)
                        {
                                lpSourceName = (LPCTSTR) ((LPBYTE) ptr + sizeof(EVENTLOGRECORD));
                                FormatMessage(
                    FORMAT_MESSAGE_FROM_HMODULE,
                    ghResDll,ptr->EventID,              
                    MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),(LPTSTR) &lpMsgBuf1,4096,NULL);  
                                SendMessage(hlist,LB_ADDSTRING,0,(LPARAM)"S");
                                read_len -= ptr->Length;
                                ptr = (EVENTLOGRECORD *) ((LPBYTE) ptr + ptr->Length);
                        }
                }
                CloseEventLog(hdle);
        }
}

LRESULT CALLBACK  mainDlgProc(HWND  hDlg, UINT uMsg,WPARAM wParam, LPARAM lParam)   
{   
     switch(uMsg)
     {   
         case  WM_INITDIALOG:
                   InitCommonControls();   //通用控件初始化
                   SetWindowText(hDlg,"日志读取程序");
                   hlist=GetDlgItem(hDlg,IDC_LIST1);
           return   TRUE;   
         case   WM_COMMAND:   
           switch(wParam)
           {   
             case  IDOK:
                         {
                listevent();   
                return TRUE;
                         }
           }
                   break;
                 case WM_CLOSE:
           EndDialog(hDlg,TRUE);   
                   break;
       }   
    return  0;   
}

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
                      LPSTR pCmdLine,  int nCmdShow)
   
{   
    hInstance = GetModuleHandle(0);
    DialogBoxParam(hInstance,(LPCTSTR)IDD_DIALOG1,0,&mainDlgProc,0);   
    return(0);   
}
2008-2-3 14:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
IDOK改成别的
2008-2-3 14:24
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
return true~
2008-2-3 14:27
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个RC 无法编译(改完了)

//Microsoft Developer Studio generated resource script.
//
#include <windows.h>
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
// Chinese (P.R.C.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE
BEGIN
    "\0"
END

3 TEXTINCLUDE DISCARDABLE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
2008-2-3 14:32
0
雪    币: 247
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
或者return ::DefWindowProc();

return 0;表示消息尚未处理,是吧
2008-2-3 14:32
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
返回TRUE也无效,点OK后,程序就退出了
2008-2-3 14:41
0
雪    币: 16
活跃值: (515)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不对。。。看错了。呵呵http://bbs.pediy.com/attachment.php?attachmentid=11602&stc=1&d=1202156828
上传的附件:
2008-2-5 03:53
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
郁闷,我放弃使用VC来写图形界面程序
2008-2-5 07:53
0
雪    币: 709
活跃值: (2590)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
11
不错,这么容易就放弃了.
2008-2-5 09:21
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我用DELPHI写图形界面
初步计划:用C写一些DELPHI写起来比较困难的(说不准哪天高兴,我还钟情于C)
正因为我3天打渔,2天筛网,所以我现在还是一事无成
2008-2-5 10:14
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
太强大了。。
我都是直接生成的
2008-2-5 16:05
0
雪    币: 0
活跃值: (116)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
HANDLE hConsole;
WM_INITDIALOG里加入
AllocConsole();
hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
在关键代码处加入 WriteConsole( hConsole, "11111", strlen( "11111" ), 0, NULL );
看执行到哪条
2008-2-9 18:36
0
游客
登录 | 注册 方可回帖
返回