C_and_CPP 板


LINE

平台:Visual Studio 2010 小弟最近在学视窗程式的编写 想说先从最底层的Win32 API开始,应该能比较了解整个视窗的运作 但...找了一下坊间讲到C++视窗程式的书大多都是讲MFC 对於Win32 API都只有几页带过,教你怎麽创个空的视窗就没了 有研究一下那些在讲MFC的书,觉得那对小弟而言实在太难了 而且版上大大好像也不推荐 所以我打算把Win32 API的一些基础跟流程摸熟之後转至Qt Qt对我而言应该是比较好上手 以下是小弟的问题 我现在在主视窗中开了两个EDIT WINDOW跟一个BUTTON 想要作一些简单的功能 程式码部分: 先宣告了全域变数 HWND B1,B2,text1; //存子视窗的handle TCHAR ch1[100]=" "; //之後要用的字串 在WinMain函式里面把BUTTON跟EDIT视窗的handle存进去 B1 = CreateWindow( _T("BUTTON"), _T("按钮1"), WS_CHILD|WS_VISIBLE|WS_BORDER, 10, 10, 50, 20, hWnd, NULL, hInstance, NULL); text1 = CreateWindow( _T("EDIT"), NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, 80, 10, 100, 20, hWnd, NULL, hInstance, NULL); text2 = CreateWindow( _T("EDIT"), NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, 80, 40, 100, 20, hWnd, NULL, hInstance, NULL); SendMessage(text2,ES_READONLY,0,0); 然後在WndProc函式里 case WM_COMMAND: {if (HWND(lParam) == B1) { SendMessage(text2,EM_UNDO,0,0); SendMessage(text1,EM_GETLINE,0,(LPARAM)ch1); K=int(ch1[0]); K-=48;//0在unicode是48 K*=2;//数字乘2 K+=48;//数字变回对应的unicode码 ch1[0]=TCHAR(K); SendMessage(text2,EM_REPLACESEL,1,(LPARAM)ch1); InvalidateRect(hWnd,NULL,TRUE); } return 0;} 上面的功能就是要让使用者在第一个EDIT输入数字 按按钮後就会让该数字乘以2後显示在第二个EDIT 但是...上面的做法没有考虑输入或输出超过两位的情况,而且也不能处理浮点数 虽然硬要做还是可以(用个回圈检查有没有小数点之类的) 想请问如果要做这种接受数字型态input的视窗程式有没有更好的作法? 另外再请问一下用CreateWindow做出来的BUTTON有没有办法帮他定义识别码ID? 还是只能用全域变数纪录他的handler? 还有WndProc接收的HWND型态的引数hWnd是哪一个视窗的handler? 就我所了解程式呼叫WndProc的时机是讯息回圈从讯息伫列抓到讯息 然後呼叫DisPatch函式後进入 但是他好像也不是目前送出讯息的视窗的handler 因为if条件那边如果改成 if(hWnd == B1)的话 按按钮就没有反应了 那这个hWnd到底是谁勒?? 另外处理不同的讯息只用这种 if switch case的写法吗 这样如果程式规模越来越大感觉会很难维护 感谢大大解答,刚开始学习视窗程式实在有好多疑问 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.230.213.139
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1457020698.A.5D0.html 03/04 00:01
1F:→ w0005151: 抱歉 这个才对http://imgur.com/UWUUfyi 03/04 00:02
※ 编辑: w0005151 (36.230.213.139), 03/04/2016 00:11:40
2F:推 stupid0319: visual studio 能直接拖拉元件,很方便了 03/04 23:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP