BOOL CALLBACK SHIJIANDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
    case WM_INITDIALOG:
        SetDlgItemText(hDlg,IDC_STATIC1,"123");//想更改静态文本 但是显示的还是原先的文本
        return 1;
    case WM_COMMAND:
        switch(LOWORD(wParam))
        {
        case IDOK:
            EndDialog(hDlg,0);
            return 1;
        }
    }
    return 0;
}好吧 我承认我被打败了被折磨得不行了  看着流水般的分数 不知道还能问几次 
这个是我今天上午问的问题  令我能比较满意的答案是“在WM_INITDIALOG 期间 静态文本组建 没有创建完成”别急还有后续版本
如果说
“在WM_INITDIALOG 期间 静态文本组建 没有创建完成”
那么
BOOL CALLBACK SHIJIANDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
SetDlgItemText(hDlg,IDC_STATIC1,"123");
return 1;
case WM_COMMAND:
SetDlgItemText(hDlg,IDC_STATIC1,"123");//仍然不修改对话框 
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg,0);
return 1;
}
}
return 0;
}哎  另外我还发现一个奇怪的现象  还是上面的程序
按理说按照上面的程序点击IDOK按钮应该关闭对话框  对吧
那如果删除EndDialog(hDlg,0);呢?  再重新编译 是不是点击IDOK就无效呢???我这么做了  点击Ctrl+F5  结果点击IDOK仍然可以关闭对话框  这是为什么  难道非要让我关闭VC重新编译才行吗???
最后  我想看完书后开始真正写程序的这一个月期间 会是我最崩溃的时候 我的兜兜中只剩下80分了 那位好心的师傅愿意加我 伴我度过这个难关 谢谢  先三鞠躬!!!

解决方案 »

  1.   

    我把我的程序发一下吧
    /*----------------------------------------------------
    SYSMETS1.C -- System Metrics Display Program No. 1
    (c) Charles Petzold, 1998
    ----------------------------------------------------*/#define WINVER 0x0500
    #include <windows.h>
    #include "resource.h"LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    BOOL CALLBACK AboutDlgProc(HWND,UINT,WPARAM,LPARAM);
    BOOL CALLBACK SHIJIANDlgProc(HWND,UINT,WPARAM,LPARAM);
    CHOOSECOLOR cc;
    COLORREF crCustColors[16];
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
    static TCHAR szAppName[] = TEXT ("SysMets1") ;
    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 (hInstance, MAKEINTRESOURCE(IDI_ICON)) ;
    wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
    wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    wndclass.lpszMenuName  = "MyMenu" ;
    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|WS_VSCROLL,
    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 ;
    }LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    static HINSTANCE hlnstance;
    HMENU hMenu;
    switch(message)
    {
    case WM_CREATE:
    hlnstance = ((LPCREATESTRUCT)lParam)->hInstance;
    cc.lStructSize = sizeof(CHOOSECOLOR);
    cc.hwndOwner = NULL;
    cc.hInstance = NULL;
    cc.rgbResult = RGB(0,0,0);
    cc.lpCustColors = crCustColors;
    cc.Flags = CC_RGBINIT|CC_FULLOPEN;
    cc.lCustData = 0;
    cc.lpfnHook = NULL;
    cc.lpTemplateName = NULL;
    case WM_COMMAND:
    hMenu = GetMenu(hwnd);
    switch(LOWORD(wParam))
    {
    case ID_DAKAI:
    MessageBox(hwnd,TEXT("打开"),TEXT("消息"),MB_OK);
    return 0;
    case ID_XINJIAN:
    MessageBox(hwnd,TEXT("新建"),TEXT("消息"),MB_OK);
    return 0;
    case ID_BAOCUN:
    MessageBox(hwnd,TEXT("保存"),TEXT("消息"),MB_OK);
    return 0;
    case ID_GUANBI:
    SendMessage(hwnd,WM_CLOSE,0,0);
    return 0;
    case ID_PAIMING:
    MessageBox(hwnd,TEXT("排名"),TEXT("消息"),MB_OK);
    return 0;
    case ID_ZONGCHENGJI:
    MessageBox(hwnd,TEXT("总成绩"),TEXT("消息"),MB_OK);
    return 0;
    case ID_PINGJUNFEN:
    MessageBox(hwnd,TEXT("平均分"),TEXT("消息"),MB_OK);
    return 0;
    case ID_YANSE:
    ChooseColor(&cc);
    SetClassLong(hwnd,GCL_HBRBACKGROUND,(LONG)GetStockObject((int)crCustColors[1]));
    InvalidateRect(hwnd,NULL,TRUE);
    return 0;
    case ID_JISUANQI:
    MessageBox(hwnd,TEXT("计算机"),TEXT("消息"),MB_OK);
    return 0;
    case ID_SHIJIAN:
    DialogBox(hlnstance,TEXT("SHIJIAN"),hwnd,AboutDlgProc);
    return 0;
    case ID_BANBEN:
    DialogBox(hlnstance,TEXT("ABOUTBOX"),hwnd,AboutDlgProc);
    return 0;
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    BOOL CALLBACK AboutDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
    {
    switch(message)
    {
    case WM_INITDIALOG:
    return 1;
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDOK:
    EndDialog(hDlg,0);
    return 1;
    }

    } return 0;
    }
    BOOL CALLBACK SHIJIANDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
    {
    switch(message)
    {
    case WM_INITDIALOG:
    SetDlgItemText(hDlg,IDC_STATIC1,"123");
    return 1;
    case WM_COMMAND:
    SetDlgItemText(hDlg,IDC_STATIC1,"123");
    switch(LOWORD(wParam))
    {
    case IDOK:
    return 1;
    }
    }
    return 0;
    }RC文件
    //Microsoft Developer Studio generated resource script.
    //
    #include "resource.h"#define APSTUDIO_READONLY_SYMBOLS
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 2 resource.
    //
    #include "afxres.h"/////////////////////////////////////////////////////////////////////////////
    #undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////
    // 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"
    END2 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "#include ""afxres.h""\r\n"
        "\0"
    END3 TEXTINCLUDE DISCARDABLE 
    BEGIN
        "\r\n"
        "\0"
    END#endif    // APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Icon
    //// Icon with lowest ID value placed first to ensure application icon
    // remains consistent on all systems.
    IDI_ICON                ICON    DISCARDABLE     "icon1.ico"
    IDI_ICON1               ICON    DISCARDABLE     "ico00001.ico"/////////////////////////////////////////////////////////////////////////////
    //
    // Menu
    //MYMENU MENU DISCARDABLE 
    BEGIN
        POPUP "文件"
        BEGIN
            MENUITEM "打开",                        ID_DAKAI
            MENUITEM "新建",                        ID_XINJIAN
            MENUITEM "保存",                        ID_BAOCUN
            MENUITEM "关闭",                        ID_GUANBI
        END
        POPUP "操作"
        BEGIN
            MENUITEM "排名",                        ID_PAIMING
            MENUITEM "总成绩",                      ID_ZONGCHENGJI
            MENUITEM "平均分",                      ID_PINGJUNFEN
        END
        POPUP "其他"
        BEGIN
            MENUITEM "颜色",                        ID_YANSE
            MENUITEM "计算器",                      ID_JISUANQI
            MENUITEM "时间",                        ID_SHIJIAN
        END
        POPUP "帮助"
        BEGIN
            MENUITEM "版本信息",                    ID_BANBEN
            MENUITEM "帮助",                        ID_BANGZHU
        END
    END
    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //ABOUTBOX DIALOG DISCARDABLE  32, 32, 187, 95
    STYLE DS_MODALFRAME | WS_POPUP
    FONT 10, "System"
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,68,74,50,14
        ICON            IDI_ICON1,IDC_STATIC,15,17,20,20
        LTEXT           "第一个“大型”程序",IDC_STATIC,66,20,90,11
        LTEXT           "这是我写的第一个有点规模的WINDOWS程序",IDC_STATIC,17,41,
                        156,29
    ENDSHIJIAN DIALOG DISCARDABLE  150, 80, 187, 95
    STYLE DS_MODALFRAME | WS_POPUP
    FONT 10, "System"
    BEGIN
        LTEXT           "Static",IDC_STATIC1,39,32,112,22
        PUSHBUTTON      "关闭",IDOK,69,66,50,14
    END
    /////////////////////////////////////////////////////////////////////////////
    //
    // DESIGNINFO
    //#ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO DISCARDABLE 
    BEGIN
        "ABOUTBOX", DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 180
            TOPMARGIN, 7
            BOTTOMMARGIN, 88
        END    "SHIJIAN", DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 180
            TOPMARGIN, 7
            BOTTOMMARGIN, 88
        END
    END
    #endif    // APSTUDIO_INVOKED#endif    // Chinese (P.R.C.) resources
    /////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //
    /////////////////////////////////////////////////////////////////////////////
    #endif    // not APSTUDIO_INVOKED
    H文件
    //{{NO_DEPENDENCIES}}
    // Microsoft Developer Studio generated include file.
    // Used by icon.rc
    //
    #define IDI_ICON                        101
    #define IDI_ICON1                       104
    #define IDC_STATIC1                     1002
    #define ID_DAKAI                        40001
    #define ID_XINJIAN                      40002
    #define ID_BAOCUN                       40003
    #define ID_GUANBI                       40004
    #define ID_PAIMING                      40005
    #define ID_ZONGCHENGJI                  40006
    #define ID_PINGJUNFEN                   40007
    #define ID_YANSE                        40008
    #define ID_JISUANQI                     40009
    #define ID_SHIJIAN                      40010
    #define ID_BANBEN                       40011
    #define ID_BANGZHU                      40012// Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        107
    #define _APS_NEXT_COMMAND_VALUE         40013
    #define _APS_NEXT_CONTROL_VALUE         1003
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif
      

  2.   

    兄弟呀,我最近也刚学MFC,也是各种悲剧呀,被折磨的快不行了。
    只能一步步跟踪,设断点调试了
      

  3.   

    楼主,我刚才建了一个MFC的对话框程序,在
    BOOL CMainDlg::OnInitDialog(CWindow wndFocus, LPARAM lInitParam)
    调用
    SetDlgItemText(IDC_STATIC1, _T("sfsfsdf"));100%的改变了这个控制的文本。
      

  4.   

      case ID_SHIJIAN:
                DialogBox(hlnstance,TEXT("SHIJIAN"),hwnd,AboutDlgProc);
                return 0;
            case ID_BANBEN:
                DialogBox(hlnstance,TEXT("ABOUTBOX"),hwnd,AboutDlgProc);
                return 0;
    你把两个对话框 的回调函数指向了同一个,能改才怪