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分了 那位好心的师傅愿意加我 伴我度过这个难关 谢谢 先三鞠躬!!!
{
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分了 那位好心的师傅愿意加我 伴我度过这个难关 谢谢 先三鞠躬!!!
解决方案 »
- C语言下如何实现微秒级延时,我用循环和Sleep最小是 15或16毫秒
- WebBrowser控件打开网页,如何屏蔽右键消息
- 高手进 得到主窗口句柄
- 如何让程序在后台运行?
- 有谁遇到过avifileopen在98下打开长文件名(257个字符)死机的问题
- 各位大侠!!数据库表的字段值过大,CRecordset::GetFieldValue取不完整,应该怎么办???
- 请问int _tmain(int argc,char *argv[],char *envp[]) 中char * envp 表示什么意思?
- 谁能用比较通俗的语言解释一下傅里叶变换的原理和目的。
- 高手来看看啊,
- VC多语种软件开发(多个RC资源文件)问题
- 一个位图显示的问题 ,CreatePatternBrush失败
- 准备北漂,散分
/*----------------------------------------------------
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
只能一步步跟踪,设断点调试了
BOOL CMainDlg::OnInitDialog(CWindow wndFocus, LPARAM lInitParam)
调用
SetDlgItemText(IDC_STATIC1, _T("sfsfsdf"));100%的改变了这个控制的文本。
DialogBox(hlnstance,TEXT("SHIJIAN"),hwnd,AboutDlgProc);
return 0;
case ID_BANBEN:
DialogBox(hlnstance,TEXT("ABOUTBOX"),hwnd,AboutDlgProc);
return 0;
你把两个对话框 的回调函数指向了同一个,能改才怪