C++之CWnd窗口框架实例

本文实例讲述了CWnd窗口框架,分享给大家供大家参考。具体分析如下:

.h头文件代码如下:

代码如下:

#include <afxwin.h> 
 
class CMyApp:public CWinApp 

public: 
    virtual BOOL InitInstance(); 
}; 
 
//CMainWindow 
class CMainWindow:public CWnd 

public: 
    CMainWindow(); 
    ~CMainWindow(); 
 
protected: 
    afx_msg void OnNcDestroy( ); 
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
    afx_msg void OnDestroy( ); 
    DECLARE_MESSAGE_MAP() 
};

.cpp源文件代码如下:

代码如下:

#include "ReadBMP.h" 
#include "resource.h" 
 
CMyApp theApp; 
BOOL CMyApp::InitInstance() 

    m_pMainWnd = new CMainWindow; 
    m_pMainWnd->ShowWindow(m_nCmdShow); 
    return TRUE; //必须返回TRUE,否则不会进入消息循环,界面会直接退出 

 
//CMainWindow 
BEGIN_MESSAGE_MAP(CMainWindow, CWnd) 
ON_WM_CREATE() 
END_MESSAGE_MAP() 
//构造函数 
CMainWindow::CMainWindow() 

    LPCTSTR lpszClassName = ::AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW, ::LoadCursorA(NULL, IDC_ARROW), (HBRUSH)(COLOR_3DFACE+1), theApp.LoadIcon(IDI_MAIN)); 
    CreateEx(WS_EX_CLIENTEDGE, lpszClassName, "xxx", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL); 

//析构函数 
CMainWindow::~CMainWindow() 

 

//消息映射函数 
int CMainWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) 

    //OutputDebugString("oncreate"); 
    //设置菜单 
    HMENU hMenu = ::LoadMenuA(theApp.m_hInstance, (LPCSTR)IDR_MENU); 
    ::SetMenu(m_hWnd, hMenu); 
    return 0; 

 
void CMainWindow::OnNcDestroy( ) 

    delete this; 

void CMainWindow::OnDestroy() 

     
}

希望本文所述对大家的C++程序设计有所帮助。

(0)

相关推荐

  • VC6实现激活后台窗口最佳方法

    本文实例讲述了VC6实现激活后台窗口最佳方法.分享给大家供大家参考.具体实现方法如下: //激活窗口 SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); HWND hCurWnd = NULL; DWORD lMyID; DWORD lCurID; hCurWnd = ::GetForegro

  • C++获取任务栏打开程序窗口示例

    复制代码 代码如下: // File: OpenProgramOnTaskbar.h #pragma once#include <vector> struct TaskInfo {    // 程序名称    CString strProgramName; // 窗口句柄    HWND hWnd;}; class TaskbarInfo{public:    // 回调函数    static BOOL CALLBACK EnumWindowProc(HWND hWnd, LPARAM lP

  • VC++实现输出GIF到窗体并显示GIF动画的方法

    本文讲述了VC++在窗体中显示GIF动画的方法,这是主要代码部分,在这段代码中,VC++将使用GDI技术加载GIF图像,定义GUID数组.定义指针.初始化各成员变量.释放属性对象.释放GUID等资源等. 代码如下: //加载GIF文件 void COutputGIFDlg::OnBrowse() { CFileDialog flDlg(TRUE, "", "", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "GIF|*.

  • 用VC++6.0的控制台实现2048小游戏的程序

    首先感谢这位大侠的无私分享,仔细学习这个程序以后收获很多,试着添加一些注释 源程序是从开源中国看到的,原作者是 刘地(sir?) 地址为http://www.oschina.net/code/snippet_593413_46040 geek_monkey于2015年3月5日为拜读该程序,受益匪浅 为了方便自己,以及更多初学者阅读,我试着写了写了注释供参考 我是C语言初学者,如有错误希望指正.轻喷 复制代码 代码如下: #include <stdlib.h> #include <stdi

  • VC小技巧汇总之窗口技巧

    本文搜集汇总了VC小技巧的窗口技巧,对于VC程序开发的窗口设计而言有一定的借鉴价值,详情如下: 1.让窗口一启动就最大化 把应用程序类(CxxxApp)的 InitInstance() 函数中的 m_pMainWnd->ShowWindow(SW_SHOW); 改为 m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); 则窗口一启动就最大化显示. 2.如何设置窗口的初始尺寸 在将应用程序类(CxxAPP)的 InitInstance() 函数中加入: m_pMai

  • 在VC中隐藏控制台程序窗口的实现代码

    下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).首先我们来看一下linker的 /subsystem 选项该选项的语法形式如下: /subsystem:{console|efi_application|efi_boot_service_driver|efi_rom|efi_runtime_driver|native|posix|window

  • C++ 中CloseHandle 函数--关闭一个句柄

    CloseHandle函数 作用 关闭一个打开的对象句柄. 语法 BOOL WINAPI CloseHandle( _In_ HANDLE hObject ); 参数 hObject 已经打开的有效对象句柄. 返回值 如果函数操作成功,返回值为非零值 如果函数操作失败,返回值为零. 注意: (1)句柄不应该被关闭两次: (2)可以关闭的句柄有控制台输入.控制台屏幕缓冲区等. 头文件 Winbase..h(包括Windows.h) 参考来源:来源:https://msdn.microsoft.co

  • VC实现A进程窗口嵌入到B进程窗口中显示的方法

    本文通过一个Demo示例讲述把A应用程序嵌入到B应用程序中显示的方法. 主要代码如下: //在B应用启动时创建A进程 CreateProcess(_T("A.exe"),NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,NULL,NULL); Sleep(30); HWND hWndChild = FindWindow(_T("AAA"),_T("AAA")); while(!hWndChild)

  • VC++编程获取窗口句柄的方法小结

    本文实例讲述了VC++编程获取窗口句柄的方法.分享给大家供大家参考,具体如下: 在VC++编程中常需获取控件或窗体句柄,下面总结了几种方法,还希望大家能多多补充. 1.自身窗口句柄可用AfxGetMainWnd获取. 2.系统中其他APP的窗口句柄可用FindWindow获取(用SPY帮一下忙). HWND hBtnClose; HWND hWnd=::FindWindow(NULL,"腾讯QQ系统广播"); if(hWnd) { hBtnClose=GetDlgItem(hWnd,2

  • VC实现对话框窗口任意分割

    个人认为简单问题最好就是直接贴源代码,一看就明白,说来说去反而弄不清楚,那我就少废话了,自己看吧,注释很清楚. 先来张图片 1. 新建一个MFC对话框程序MySplitterDlg. 再插入两个Dialog资源 ,这里一定要选择IDD_FORMVIEW类别的对话框,分别新建类CMyFormView0 和CMyFormView1,基类别选CDialog,一定要选择CFormView. 2. CMySplitterDlg中增加WM_CREATE的消息响应,编辑OnCreate() int CMySp

随机推荐