| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2897 人关注过本帖
标题:写了个win32基础的窗口 有些问题请教大牛们
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 41楼 hellovfp
他对内核和原理的东西理解的很透彻 所以能随手拈来一个很有代表性的程序  

梅尚程荀
马谭杨奚







                                                       
2012-05-06 11:26
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
在问个问题——
程序代码:
BOOL Create(HINSTANCE hInst, int nCmdShow)
{
    hInstance = hInst;   // Connect with the global instance

    HWND hWnd = CreateWindowEx(0, szAppName, szAppName,
                        WS_OVERLAPPEDWINDOW, 60, 60,
                      100, 100, NULL, NULL, hInst, NULL);

------
程序代码:
void yrjd_OnSize(HWND hWnd, UINT state, int cxClient, int cyClient)
{
    MoveWindow(hWnd, 20, 20, cxClient/2 , cyClient/2 , TRUE);
    ;
}

我的意图是先创建一个随意大小的窗口 然后在OnSize里改变成想要的大小

查了下HANDLE_MSG的OnSize函数的参数 后面两个的宏展开就是LOWORD(lParam) HIWORD(lParam)
那为什么MoveWindow里用cxClient / 2 或者 cxClient 却是 0 大小?

梅尚程荀
马谭杨奚







                                                       
2012-05-06 11:37
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 44楼 hellovfp
如果把 cxClient & cyClient 改成常数 即 MoveWindow(hWnd, 20, 20, 800 , 600 , TRUE);是可以得到一个800 * 600的窗口 不清楚OnSize的参数怎么用。

梅尚程荀
马谭杨奚







                                                       
2012-05-06 14:43
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 46楼 hellovfp
太好了 我看WIN32汇编 就是对实例很难理顺。这下要好好研究下 这个。

奥哥 确实厉害 哈哈。

梅尚程荀
马谭杨奚







                                                       
2012-05-08 14:33
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 48楼 hellovfp
试着把你给的程序改在HANDLE_MSG下  成功了
发现好多东西没用过啊
程序代码:
    // Set the circle window and set the "top most"
    HRGN hRgn = CreateEllipticRgn(0, 0, CLOCK_SIZE + 1, CLOCK_SIZE + 1);
    SetWindowRgn(hWndMain, hRgn, TRUE);
    DeleteObject(hRgn);
    SetWindowPos(hWndMain, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
发现上面这个代码把SetWindowPos注释掉对程序没影响啊

梅尚程荀
马谭杨奚







                                                       
2012-05-09 13:51
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
………………
刚去试了下原来SetWindowPos(hWndMain, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);的目的是把那个圆形时钟都放在桌面所有窗口的前面 怎么切换网页都可以看到他 哈哈 有意思。

梅尚程荀
马谭杨奚







                                                       
2012-05-09 13:54
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
windows程序设计里面的时钟 是程序直接画出来的  太强了

梅尚程荀
马谭杨奚







                                                       
2012-05-09 14:08
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 54楼 hellovfp
你是说 ---> 高级对话:设置数据和获取数据. 这一章吗.

梅尚程荀
马谭杨奚







                                                       
2012-05-09 14:20
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 56楼 hellovfp
^……当时看到是控制台 我就看的不仔细 原来还有这个用场。

梅尚程荀
马谭杨奚







                                                       
2012-05-09 14:27
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 58楼 hellovfp
参照windows 自带的那个画图工具 可以吗。

梅尚程荀
马谭杨奚







                                                       
2012-05-09 14:41
快速回复:写了个win32基础的窗口 有些问题请教大牛们
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019655 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved