| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2682 人关注过本帖
标题:向hellovfp大哥及各位论坛大牛请教关于windows编程记事本的问题
只看楼主 加入收藏
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
HMENU 是类型转换 比如 int(**) double(**)等写法类似

至于HMENU(-1), 会有-1吗?这个还真不知道 一般不需要都写NULL
2012-04-27 11:19
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
你在哪里看到创建按键有用-1做为ID值的?
只有静态文本,不需要处理事件的才用-1值。

另外要理解一下父窗口和子窗口之间的关系,不能理解这个,你无法把一个Combox控件放到工具栏或是状态栏上。

[ 本帖最后由 hellovfp 于 2012-4-27 11:24 编辑 ]

我们都在路上。。。。。
2012-04-27 11:23
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
程序代码:
/////////////////////////////////////////
// Handle WM_CREATE
/////////////////////////////////////////
#pragma argsused
BOOL skyline_OnCreate(HWND hWnd,CREATESTRUCT FAR * lpCreateStruct)
{
    static char * Titles[]={"TrueType","Heavy","Italic"};

    hFontList=CreateWindow("ListBox",NULL,
        WS_CHILD|WS_VISIBLE|LBS_STANDARD,
        20,30,210,280,hWnd,HMENU(ID_LISTBOX),hInstance,NULL);

    hNumFonts=CreateWindow("static",NULL,
        WS_CHILD|WS_VISIBLE|WS_BORDER,
        20,10,210,20,hWnd,HMENU(-1),hInstance,NULL);

    hFontName=CreateWindow("edit",NULL,
        WS_CHILD|ES_LEFT|WS_VISIBLE|ES_READONLY,
        260,10,310,70,hWnd,HMENU(-1),hInstance,NULL);

    hAlphaEdit=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|
        WS_BORDER|WS_HSCROLL|ES_LEFT|ES_AUTOHSCROLL|ES_MULTILINE,
        260,150,310,70,hWnd,HMENU(-1),hInstance,NULL);

    for(int i=0;i<3;i++)
    ButtonWindows[i]=CreateWindow("button",Titles[i],
        WS_CHILD|WS_VISIBLE|BS_CHECKBOX,
        260+(i*110),270,90,35,hWnd,HMENU(-1),hInstance,NULL);

    TheFont=0;

    PostMessage(hWnd,WM_STARTFONTS,0,0);

    return TRUE;
}
就是这代码 看来是静态控制 貌似后面无法对HMENU(-1)建立的控件进行点击操作。


[ 本帖最后由 有容就大 于 2012-4-27 11:35 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-04-27 11:30
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
居然有这代码,没注意到,有意思,除了使用子菜单句柄可以操作这种控件外,程序应该无法接收到它们发送给父窗口的消息。
其实static静态控件也可以处理鼠标消息的,这点偶曾在孙鑫的教程中看到过,就是通过改变其ID值,并设定notify属性,既可收到消息。

我们都在路上。。。。。
2012-04-27 11:39
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 41楼 hahayezhe
我把HMENU(-1)换成了NULL 编译无法通过 再换回去 怪了原来可以运行出结果的程序现在通不过了?
而且全部错误还都出在basetsd.h上,
c:\program files\microsoft visual studio\vc98\include\excpt.h(153) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\vc98\include\excpt.h(153) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\vc98\include\excpt.h(153) : error C2143: syntax error : missing ';' before '}'
c:\program files\microsoft visual studio\vc98\include\stdarg.h(36) : error C2143: syntax error : missing ';' before '{'
c:\program files\microsoft visual studio\vc98\include\stdarg.h(36) : error C2447: missing function header (old-style formal list?)
c:\program files\microsoft visual studio\vc98\include\winbase.h(3000) : error C2061: syntax error : identifier 'va_list'
c:\program files\microsoft visual studio\vc98\include\winbase.h(3012) : error C2061: syntax error : identifier 'va_list'
c:\program files\microsoft visual studio\vc98\include\winuser.h
(191) : error C2061: syntax error : identifier 'va_list'
c:\program files\microsoft visual studio\vc98\include\winuser.h(198) : error C2061: syntax error : identifier 'va_list'

#ifdef __cplusplus
extern "C" {
#endif
-----
程序代码:
WINUSERAPI
int
WINAPI
wvsprintfA(
    LPSTR,
    LPCSTR,
    va_list arglist);
WINUSERAPI
int
WINAPI
wvsprintfW(
    LPWSTR,
    LPCWSTR,
    va_list arglist);
上面两段说的什么  extern "C" {  的大括号什么意思啊。


梅尚程荀
马谭杨奚







                                                       
2012-04-27 11:43
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
#ifdef __cplusplus
extern "C" {
#endif

最常见的预处理宏,cpluscplus就是C++的意思。用于C++编译链结C函数。

多半是你源程序没有改好,偶也曾遇到过系统头文件编译问题,但当时偶敢肯定的是系统头文件不会有问题,除了自己的程序有问题外。

我们都在路上。。。。。
2012-04-27 12:01
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
你程序有地方少了} 结尾吧

extern "C" 是函数采用C语言的调用约定
2012-04-27 12:23
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:5 
初学者以为做出点图形化的东西就是成功,感觉楼主有点东一棒槌,西一榔头,你还不如系统的开始学习,把那本《windows程序设计》好好的看看,主要掌握windows的消息机制。
写个记事本根本不算什么,记事本的核心是什么?就是处理不同类型的数据,unicode,char... ...如不是这样的话,那就没什么意思了!
就你这样的,最后最多能成为个“一瓶不满半瓶晃”。

愿用余生致力编程
2012-04-27 12:35
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 48楼 我菜119
发这个东西 根本就没要显摆的意思 况且大部分都是参照书上搞的 又何来自鸣得意?
如果为了炫耀去啃那些晦涩的东西 那就2了。
主要是想弄懂里面的原理 我现在是缩手缩脚的很猥琐啊 。


梅尚程荀
马谭杨奚







                                                       
2012-04-27 12:55
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 46楼 hellovfp
把源程序拿到VS下运行了下 出来正确结果后把 HMENU(-1) 改成 NULL 竟然也可以一样的运行出正确结果
我在vc下改后怎么会出错 查了下源程序没什么改变 就是换几个字符

梅尚程荀
马谭杨奚







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



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

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