| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖
标题:win32问题,初学,求指教
只看楼主 加入收藏
zhonganyun0
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2012-7-26
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:11 
win32问题,初学,求指教
#include <windows.h>
        
//*************************************************************************** //                                         #define IDM_NEW   101                                  //

#define IDM_OPEN  102
#define IDM_SAVE   103
#define IDM_SAVEAS  104                                //
#define IDM_PRINT   105
#define IDM_EXIT     106
#define IDM_CUT   201
#define IDM_COPY  202
#define IDM_PASTE   203
#define IDM_DELETE  204                                  //区
//**************************************************************************//

int WINAPI WinMain (HINSTANCE, HINSTANCE ,LPSTR , int );


LRESULT  CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM) ;
LRESULT  CALLBACK NewWndProc(HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
        
{
//***************************************************************************************//
     static TCHAR szAppName[] = TEXT ("菜单程序") ;
      static TCHAR szXj[] = TEXT ("新建") ;                               // 可
       static TCHAR szDk[] = TEXT ("打开") ;
        static TCHAR szBc[] = TEXT ("保存") ;
         static TCHAR szLc[] = TEXT ("另存") ;
          static TCHAR szDy[] = TEXT ("打印") ;
           static TCHAR szWj[] = TEXT ("文件") ;
        static TCHAR szTc[] = TEXT ("退出") ;                             // 忽


        static TCHAR szJc[] = TEXT ("剪切") ;
        static TCHAR szFz[] = TEXT ("复制") ;
        static TCHAR szNt[] = TEXT ("黏贴") ;
        static TCHAR szBj[] = TEXT ("编辑") ;
        static TCHAR szSc[] = TEXT ("删除") ;                              // 略
//*****************************************************************************************//
WNDCLASSEX    wcex ;
   
      wcex.cbSize=sizeof(WNDCLASSEX);
           wcex.style         = CS_HREDRAW | CS_VREDRAW |CS_DBLCLKS;
        
           wcex.lpfnWndProc    =(WNDPROC) WndProc ;

             wcex.cbClsExtra    = 0 ;                                              定义窗口类
        
           wcex.cbWndExtra   = 0 ;
        
         wcex.hInstance        = hInstance ;
        
          wcex.hIcon             = LoadIcon (NULL, (LPCTSTR)IDI_APPLICATION) ;
        
          wcex.hCursor         = LoadCursor (NULL, IDC_ARROW) ;
        
           wcex.hbrBackground   = (HBRUSH) (COLOR_WINDOW+1) ;
        
           wcex.lpszMenuName   =  NULL ;
        
           wcex.lpszClassName     = szAppName;

 wcex.hIconSm  = LoadIcon(NULL, (LPCTSTR)IDI_APPLICATION) ;
         
******************************************************************************************



            if (!RegisterClassEx (&wcex)) return FALSE;


*****************************************************************************************
        
          HMENU hMenu=CreateMenu();
          HMENU hPopup=CreatePopupMenu();


          AppendMenu(hPopup,MF_STRING,IDM_NEW,szXj);
          AppendMenu(hPopup,MF_STRING,IDM_OPEN,szDk);
          AppendMenu(hPopup,MF_STRING,IDM_SAVE,szBc);
          AppendMenu(hPopup,MF_STRING,IDM_SAVEAS,szLc);
        AppendMenu(hPopup,MF_STRING,IDM_PRINT,szDy);
        AppendMenu(hPopup,MF_SEPARATOR,0,NULL);
      AppendMenu(hPopup,MF_STRING,IDM_EXIT,szTc);
      AppendMenu(hMenu,MF_POPUP,(int)hPopup,szWj);                   显示菜单项



      hPopup=CreatePopupMenu();
   
      AppendMenu(hPopup,MF_STRING,IDM_CUT,szJc);
      AppendMenu(hPopup,MF_STRING,IDM_COPY,szFz);
      AppendMenu(hPopup,MF_STRING,IDM_PASTE,szNt);
      AppendMenu(hPopup,MF_STRING,IDM_DELETE,szSc);
      AppendMenu(hMenu,MF_POPUP,(int)hPopup,szBj);
**********************************************************************************************
HWND hWnd=CreateWindowEx(NULL,

    szAppName,
    szAppName,
    WS_OVERLAPPEDWINDOW,
    100,
    100,
    500,
    350,
    NULL,
    hMenu,
    hInstance,
    NULL);

if(!hWnd)return FALSE;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{

    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
return msg.wParam;
}


LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)   //窗口消息处理程序
        
{
 
        
   
        
    switch (message)//////////////////////////////////////////////////////////消息处理
        
    {
        
    case WM_COMMAND:

        switch(wParam)
{
        case IDM_EXIT:         
PostQuitMessage(0);
        break ;

        case IDM_NEW:
************************************************************************

   
            
      此处如何实现新建一个可编辑窗口  。。。。。。。。。。。。。。。。。。。
   

  **************************************************************************  
        
    }   
        
        
    case   WM_DESTROY:
        
            PostQuitMessage (0) ;
        
 break ;
        
   
    default:   
  return DefWindowProc (hwnd, message, wParam, lParam) ;
        
}
    return 0;
}



搜索更多相关主题的帖子: include 103 102 
2012-08-06 00:50
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
比较简单的就是 把主窗口句柄 实例 和 窗口类名 提升为全局变量
-
static HINSTANCE hInstance;
static HWND hWnd;
static TCHAR szAppName[] = TEXT ("菜单程序") ;

然后 在消息处理时创建子窗口
--
程序代码:
case IDM_NEW:
{
       HWND NewWnd = CreateWindow(szAppName, "oo",WS_CHILD|WS_VISIBLE|WS_OVERLAPPEDWINDOW,
                    10, 10, 400, 200, hWnd, 0, 0, hInstance, 0);
}
break;
注意下窗口样式WS_**就差不多了。


梅尚程荀
马谭杨奚







                                                       
2012-08-06 17:26
zhonganyun0
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2012-7-26
收藏
得分:0 
回复 2楼 有容就大
不行,,创建不了
2012-08-07 02:44
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:10 
回复 3楼 zhonganyun0
呵呵 我在VS2010下试过的 可以。
你说说看你调式的时候程序哪里有问题?
注意 全局变量要放在程序首部 。

梅尚程荀
马谭杨奚







                                                       
2012-08-07 06:45
zhonganyun0
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2012-7-26
收藏
得分:0 
回复 4楼 有容就大
创建出来一个窗口,但是无法在那个窗口编辑,鼠标点击编辑没反应,边框是灰色,而且新窗口不是嵌套在主窗口,是另一个窗口

[ 本帖最后由 zhonganyun0 于 2012-8-7 11:44 编辑 ]
2012-08-07 11:13
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
这样创建的是一个子窗口 要编辑可以设置为edit类窗口 然后设置下光标就成
程序代码:
 case IDM_NEW:
            {
                HWND hwndEdit = CreateWindow ("edit", NULL,
                              WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW |
                              WS_BORDER | ES_LEFT | ES_MULTILINE ,
                              10, 10, 220, 220,
                              hWnd, 0, hInstance, NULL) ;
                 SetFocus (hwndEdit) ;
            }
            break;


 

梅尚程荀
马谭杨奚







                                                       
2012-08-07 14:07
zhonganyun0
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2012-7-26
收藏
得分:0 
回复 6楼 有容就大
这个实现了已经,问题是再子窗口点击一下就不能编辑了
2012-08-07 17:22
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 7楼 zhonganyun0
这个应该可以 具体的可以参照下windows程序设计关于记事本方面的东西。
图片附件: 游客没有浏览图片的权限,请 登录注册


梅尚程荀
马谭杨奚







                                                       
2012-08-07 17:30
zhonganyun0
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2012-7-26
收藏
得分:0 
回复 8楼 有容就大
网上找了很多,要么代码不全,要么是别的语言写的,,,,

你的鼠标可以在主窗口客户区和子窗口客户区点击跟随???????就是鼠标点主窗口客户区编辑光标就在主窗口,鼠标点子窗口客户区编辑光标就在子窗口。。。。。


我这鼠标一点就跑到主窗口客户区回不来了
初学就是麻烦呐,,,,,

[ 本帖最后由 zhonganyun0 于 2012-8-7 17:46 编辑 ]
2012-08-07 17:44
zhonganyun0
Rank: 2
等 级:论坛游民
帖 子:31
专家分:18
注 册:2012-7-26
收藏
得分:0 
回复 8楼 有容就大
Notepad.rar (8.02 KB)
能用windows Api写出一个这样的记事本么,,这是汇编写的,,,麻烦Api写个类似的参考。。。
2012-08-07 17:55
快速回复:win32问题,初学,求指教
数据加载中...
 
   



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

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