vc 呼叫clayui實現三維翻轉窗體

2021-05-26 07:45:06 字數 2590 閱讀 5048

厭倦了普通的開啟窗體,對3d作業系統窗體介面跳出特效比較心動,但是自己還在用vc++6開發程式,從網上翻了翻,找到乙個介面特效庫,實現了翻轉介面,這樣程式在開啟窗體或關閉窗體時,來這麼個翻轉,應該感覺不錯

下面是實現步驟:

1 -------------引用標頭檔案

在stdafx.h裡增加

#include

#pragma warning(disable : 4786)

#include

#include

#include

#include

using std::map;

using std::vector;

using std::string;

typedef struct _bmpinfo, *bmpinfo;

#define dll_export

#define c_dll_export extern "c" dll_export

#include "../clayui/ui_basic/clayui_config.h"

在自己主窗體的cpp(本例是switch3ddlg.cpp)裡增加

#include "../clayui/ui_basic/clayui_bframe.h"

#include "../clayui/ui_animation/clayui_alpha_anim.h"

#include "../clayui/ui_animation/clayui_scale_anim.h"

#include "../clayui/ui_animation/clayui_rotate_anim.h"

#include "../clayui/ui_animation/clayui_move_anim.h"

在switch3ddlg.cpp的標頭檔案switch3ddlg.h增加標頭檔案引用

加入工程

2 ---------------------switch3ddlg.h裡增加變數和函式宣告

同時還有類的虛函式實現virtual lresult windowproc(uint message, wparam wparam, lparam lparam);

afx_msg void ontimer(uint nidevent);//定時器

virtual void oncancel();//退出按鈕

afx_msg void onclose();//窗體關閉事件

afx_msg void onctest();//垂直按鈕

afx_msg void onbtrun();//水平翻轉

3 -----------------------cpp檔案加**

#define ws_ex_layered           0x00080000   

#define lwa_colorkey            0x00000001

#define lwa_alpha               0x00000002

#define wm_init3d  wm_user+200  //

#define turn_timelen 800    //

#define move_z   -1600   //

bool g_init=false;//

bool g_time=false;//

typedef dword (winapi *pslwa)(hwnd, dword, byte, dword);

static pslwa psetlayeredwindowattributes = null;//

static bool initialized = false;//

wndproc    g_pwndproc;

bool makewindowtransparent(hwnd hwnd, unsigned char factor){

....//窗體透明

lresult callback cswitch3ddlg::ctrlwndproc(hwnd hwnd, uint nmsg, wparam wparam, lparam lparam){

...//控制項接收訊息傳遞

oninitdialog()窗體初始化裡增加**初始化clayui物件

然後發訊息可以啟動動畫翻轉了postmessage(wm_init3d,0,0);

然後初始化動畫物件

lresult cswitch3ddlg::windowproc(uint message, wparam wparam, lparam lparam)

{// todo: add your specialized code here and/or call the base class

if(wm_init3d==message){

if(!g_init){

g_init=true;

return cdialog::windowproc(message, wparam, lparam);

另外:void cswitch3ddlg::redraw(cdc *pdc)這個就是具體畫出效果的函式,定時器畫出不同形狀,就看起來像動畫翻轉了

csdn發博文不能帶附件不太好,具體詳細**見只能放到

更多clayui庫參見

牛頓法 三維 Python實現

from mpl toolkits.mplot3d import axes3d from matplotlib import pyplot as plt import matplotlib as mpl from numpy import from sympy import symbols,diff...

GDI 實現三維三叉樹

首先看看效果 在學習二叉樹資料結構的時候,用gdi 結合佇列或者棧來畫出來乙個二叉樹的結構,如果你不是一次繪製完成,而是從每兩個線的繪製有時間間隔的話,你就能看到樹的 生長過程 而使用棧和佇列將得到完全不同的生長方式,也許這就是深度優先遍歷和廣度優先遍歷的區別把。那麼,我當時就在想,如果繪製乙個空間...

OpenGL實現三維迷宮遊戲(一)

計算機圖形學 這門課的第二個實驗,覺得還挺有意思的 實驗要求 設計乙個opengl程式,建立乙個三維迷宮,支援替身通過一定互動手段在迷宮中漫遊,基本功能包括 迷宮應當至少包含10 10 個cell,不能過於簡單,下圖給出一種示例。讀取給定的替身模型,載入到場景中。鍵盤方向鍵控制替身轉向與漫遊。有碰撞...