| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2682 人关注过本帖
标题:向hellovfp大哥及各位论坛大牛请教关于windows编程记事本的问题
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:60 回复次数:31 
向hellovfp大哥及各位论坛大牛请教关于windows编程记事本的问题
最近磕磕绊绊在VS2010下搞了个简单的记事本 参照书上弄的 水平很有限 很多功能都没搞定 想逐个搞清楚原理并陆续加上去
先发下运行文件 (刚传了一次源码 等了半天没提交 结果一脚踢到电源线 关机了 MGD)
NotepadOne.zip (47.42 KB)

先问一个问题
下面是WM_CREATE的代码
程序代码:
case WM_CREATE:
        {
               
                hInst = ((LPCREATESTRUCT)lParam)->hInstance;
                HWND hWndButton = CreateWindow(L"Edit", NULL, WS_CHILD | WS_VISIBLE |
                    ES_WANTRETURN | ES_RIGHT ,
                        220, 60, 50, 18, hWnd, (HMENU)ID_EDIT,  hInst, NULL);               
                // Create the edit control child window
                GetWindowText(hWndButton, szPassword, sizeof(szPassword));
                if (/*lstrcmp(szPassword, L"123") == 0*/1)
                {
                   
                    hWndEdit = CreateWindow(L"Edit", NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |
                                     WS_BORDER | ES_LEFT |ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL
                                     | ES_NOHIDESEL,
                                     0, 0, 0, 0, hWnd, (HMENU)ID_EDIT,
                                     hInst, NULL);
                    SendMessage(hWndEdit, EM_LIMITTEXT, 0, 0L);
                    //MoveWindow(hWndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                    FileInitialize(hWnd);
                    messageFindReplace = RegisterWindowMessage(FINDMSGSTRING);
                    DoCaption(hWnd, szTitleName);
                }           
            return 0;
        }
我的目的是 先在父窗口里创建一个EDIT控件 用了输入密码的 然后用 GetWindowText(hWndButton, szPassword, sizeof(szPassword));获取输入的字符串 如果这个获取的字符串和要求的密码一样就再创建记事本界面 但是当我在这个编辑框里输入正确的密码后调用GetWindowText后 没有任何反应 难道GetWindowText读取不了这个控件句柄的内容?

查了下 网上说如果用ES_PASSWORD 格式还要复杂些 所以省去了 貌似和WM_GETTEXT有关联 但不知怎么弄.

[ 本帖最后由 有容就大 于 2012-4-25 14:31 编辑 ]
搜索更多相关主题的帖子: 记事本 windows 
2012-04-25 14:27
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 hahayezhe
首先 谢谢你的讲解
是的 我是直接在父窗口建立的EDIT控件 WM_CREATE 里面有两个CreateWindow(); 我原以为用个if就能实现先后顺序了 原来程序不会如我所愿啊 你说的意思是要截获字符串吧 要怎么弄呢 再创建个hDlg?

梅尚程荀
马谭杨奚







                                                       
2012-04-25 14:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
有么有直接在父窗口写入密码的方法啊?

梅尚程荀
马谭杨奚







                                                       
2012-04-25 14:41
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 5楼 hahayezhe
  这样啊 我去搞下看

梅尚程荀
马谭杨奚







                                                       
2012-04-25 14:50
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 7楼 hellovfp
刚上来 谢谢大哥指导

我看WINDOWS编程的书 总有一种感觉就是能看的懂但是要自己写就很猥琐 不知道怎么组织语句来实现自己想要的功能 有源代码参照还好 没有源码自己的创造力就很有限 网上有人说windows程序设计要看几遍 我一遍还没看完 惭愧啊

昨天在H版的提示下弄了个简单的登陆对话框
程序代码:
INT_PTR CALLBACK Password(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    TCHAR szPassword[100];
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        {
            GetDlgItemText(hDlg, IDC_PASSWORD, szPassword, sizeof(szPassword));
            // if (LOWORD(lParam) == IDC_OK)
            if (lstrcmp(szPassword, L"123") == 0)
            {
                MessageBox(hDlg, L"Correct!", L"message", MB_OK);
                EndDialog(hDlg, LOWORD(wParam));
                return 1;
                break;
            }
            else    
            {
                //MessageBox(hDlg, L"Wrong!", L"message", MB_OK | MB_ICONERROR);
                return 0;
            }
        }
    }
    return (INT_PTR)FALSE;
}
然后在WM_CREATE里调用
程序代码:
case WM_CREATE:
        {
               TCHAR szBuffer[100];
               hInst = ((LPCREATESTRUCT)lParam)->hInstance;        
            if (DialogBox(hInst, MAKEINTRESOURCE(IDD_PASSWORD), hWnd, Password))   
            {
                    int i = MessageBox(hWnd, L"Do you want to listen a Wonderful Song first.",
                               L"Music", MB_YESNO | MB_ICONQUESTION);
                    if (IDYES == i)       
                        PlaySound(L"Hotel California .wav", NULL, SND_FILENAME | SND_ASYNC);
                    hWndEdit = CreateWindow(L"Edit", NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |
                                     WS_BORDER | ES_LEFT |ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL
                                     | ES_NOHIDESEL,
                                     0, 0, 0, 0, hWnd, (HMENU)ID_EDIT,
                                     hInst, NULL);
                    SendMessage(hWndEdit, EM_LIMITTEXT, 0, 0L);
                    //MoveWindow(hWndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                    FileInitialize(hWnd);
                    messageFindReplace = RegisterWindowMessage(FINDMSGSTRING);
                    DoCaption(hWnd, szTitleName);
            }
            return 0;
        }
结果在是这个样子:
NotepadOne.zip (33.29 KB)

先蹦出登陆对话框 输入123在没有按确定的情况下直接跳出MessageBox,( 如果把这个注释掉的// if (LOWORD(lParam) == IDC_OK)
恢复 即使输入正确的密码也转不到下面的界面?) 主窗口hWnd不会出现 直接进入hWndEdit界面。

都是在VS2010下搞的 里面的控件和其他工具感觉和VC6不太一样 所以陌生的紧。

再去试试你讲的那些方式 MSDN 光盘版网上搜了下 比较少 找到的几个FTP都打不开? 然后我自己的MSDN里会带源码吗
图片附件: 游客没有浏览图片的权限,请 登录注册


 

[ 本帖最后由 有容就大 于 2012-4-26 14:07 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-04-26 14:00
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 9楼 TonyDeng
是有点孤军深入的感觉。

梅尚程荀
马谭杨奚







                                                       
2012-04-26 14:11
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-4-26 14:15:09的发言:

你没有用其他语言编程GUI的过程,直接入手底层,是很艰难的。何况你控制台下面向对象的编程经验也没多少。
C语言大概学了3个多月 因为喜好图形和视觉 所以认准了API 就扑在这上面了 虽然磕磕绊绊的在搞不过有老大你和hellovfp大哥及各位论坛大牛的指导我收获不少啊  菩萨保佑我坚持下去

梅尚程荀
马谭杨奚







                                                       
2012-04-26 14:24
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 12楼 zklhp
谢你吉言 预支10分如何 哈哈。 十分感谢啊

梅尚程荀
马谭杨奚







                                                       
2012-04-26 14:26
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 18楼 zklhp
看来上帝是好人 你也是好人

梅尚程荀
马谭杨奚







                                                       
2012-04-26 14:35
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 19楼 TonyDeng
那比如一个学习成绩的界面不学API怎么搞出来?你的意思是叫我去学C#    或者   JAVA?

梅尚程荀
马谭杨奚







                                                       
2012-04-26 14:36
快速回复:向hellovfp大哥及各位论坛大牛请教关于windows编程记事本的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059622 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved